Fixed failing hunks.
[rsync/rsync-patches.git] / preallocate.diff
index e7bd07c..6a3192d 100644 (file)
@@ -14,33 +14,33 @@ To use this patch, run these commands for a successful build:
 @@ -561,7 +561,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd strd
      strlcat strlcpy strtol mallinfo getgroups setgroups geteuid getegid \
      setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \
-     strerror putenv iconv_open locale_charset nl_langinfo \
--    sigaction sigprocmask)
-+    sigaction sigprocmask posix_fallocate)
+     strerror putenv iconv_open locale_charset nl_langinfo getxattr \
+-    extattr_get_link sigaction sigprocmask setattrlist)
++    extattr_get_link sigaction sigprocmask setattrlist posix_fallocate)
  
  AC_CHECK_FUNCS(getpgrp tcgetpgrp)
  if test $ac_cv_func_getpgrp = yes; then
 --- old/options.c
 +++ new/options.c
-@@ -70,6 +70,7 @@ int remove_source_files = 0;
+@@ -71,6 +71,7 @@ int remove_source_files = 0;
  int one_file_system = 0;
  int protocol_version = PROTOCOL_VERSION;
  int sparse_files = 0;
 +int preallocate_files = 0;
  int do_compression = 0;
  int def_compress_level = Z_DEFAULT_COMPRESSION;
- int am_root = 0;
-@@ -206,6 +207,7 @@ static void print_rsync_version(enum log
-       char const *xattrs = "no ";
+ int am_root = 0; /* 0 = normal, 1 = root, 2 = --super, -1 = --fake-super */
+@@ -221,6 +222,7 @@ static void print_rsync_version(enum log
        char const *links = "no ";
+       char const *iconv = "no ";
        char const *ipv6 = "no ";
 +      char const *preallocation = "no ";
        STRUCT_STAT *dumstat;
  
  #if SUBPROTOCOL_VERSION != 0
-@@ -232,6 +234,9 @@ static void print_rsync_version(enum log
- #ifdef INET6
-       ipv6 = "";
+@@ -250,6 +252,9 @@ static void print_rsync_version(enum log
+ #ifdef ICONV_OPTION
+       iconv = "";
  #endif
 +#ifdef SUPPORT_PREALLOCATION
 +      preallocation = "";
@@ -48,20 +48,20 @@ To use this patch, run these commands for a successful build:
  
        rprintf(f, "%s  version %s  protocol version %d%s\n",
                RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
-@@ -245,8 +250,8 @@ static void print_rsync_version(enum log
+@@ -263,8 +268,8 @@ static void print_rsync_version(enum log
                (int)(sizeof (int64) * 8));
        rprintf(f, "    %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
                got_socketpair, hardlinks, links, ipv6, have_inplace);
--      rprintf(f, "    %sappend, %sACLs, %sxattrs\n",
--              have_inplace, acls, xattrs);
-+      rprintf(f, "    %sappend, %sACLs, %sxattrs, %spreallocation\n",
-+              have_inplace, acls, xattrs, preallocation);
+-      rprintf(f, "    %sappend, %sACLs, %sxattrs, %siconv\n",
+-              have_inplace, acls, xattrs, iconv);
++      rprintf(f, "    %sappend, %sACLs, %sxattrs, %siconv, %spreallocation\n",
++              have_inplace, acls, xattrs, iconv, preallocation);
  
  #ifdef MAINTAINER_MODE
        rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
-@@ -329,6 +334,9 @@ void usage(enum logcode F)
-   rprintf(F," -O, --omit-dir-times        omit directories when preserving times\n");
-   rprintf(F,"     --super                 receiver attempts super-user activities\n");
+@@ -351,6 +356,9 @@ void usage(enum logcode F)
+   rprintf(F,"     --fake-super            store/recover privileged attrs using xattrs\n");
+ #endif
    rprintf(F," -S, --sparse                handle sparse files efficiently\n");
 +#ifdef SUPPORT_PREALLOCATION
 +  rprintf(F,"     --preallocate           posix_fallocate dest files before writing them\n");
@@ -69,15 +69,15 @@ To use this patch, run these commands for a successful build:
    rprintf(F," -n, --dry-run               show what would have been transferred\n");
    rprintf(F," -W, --whole-file            copy files whole (without rsync algorithm)\n");
    rprintf(F," -x, --one-file-system       don't cross filesystem boundaries\n");
-@@ -496,6 +504,7 @@ static struct poptOption long_options[] 
+@@ -528,6 +536,7 @@ static struct poptOption long_options[] 
    {"max-size",         0,  POPT_ARG_STRING, &max_size_arg, OPT_MAX_SIZE, 0, 0 },
    {"min-size",         0,  POPT_ARG_STRING, &min_size_arg, OPT_MIN_SIZE, 0, 0 },
    {"sparse",          'S', POPT_ARG_NONE,   &sparse_files, 0, 0, 0 },
 +  {"preallocate",      0,  POPT_ARG_NONE,   &preallocate_files, 0, 0, 0},
    {"inplace",          0,  POPT_ARG_NONE,   &inplace, 0, 0, 0 },
-   {"append",           0,  POPT_ARG_VAL,    &append_mode, 1, 0, 0 },
-   {"del",              0,  POPT_ARG_NONE,   &delete_during, 0, 0, 0 },
-@@ -1189,6 +1198,15 @@ int parse_arguments(int *argc, const cha
+   {"append",           0,  POPT_ARG_NONE,   0, OPT_APPEND, 0, 0 },
+   {"append-verify",    0,  POPT_ARG_VAL,    &append_mode, 2, 0, 0 },
+@@ -1284,6 +1293,15 @@ int parse_arguments(int *argc_p, const c
        }
  #endif
  
@@ -93,14 +93,14 @@ To use this patch, run these commands for a successful build:
        if (write_batch && read_batch) {
                snprintf(err_buf, sizeof err_buf,
                        "--write-batch and --read-batch can not be used together\n");
-@@ -1849,6 +1867,9 @@ void server_options(char **args,int *arg
+@@ -1988,6 +2006,9 @@ void server_options(char **args, int *ar
        else if (remove_source_files)
                args[ac++] = "--remove-sent-files";
  
 +      if (preallocate_files && am_sender)
 +              args[ac++] = "--preallocate";
 +
-       *argc = ac;
+       *argc_p = ac;
        return;
  
 --- old/receiver.c
@@ -133,7 +133,7 @@ To use this patch, run these commands for a successful build:
        read_sum_head(f_in, &sum);
  
        if (fd_r >= 0 && size_r > 0) {
-@@ -245,8 +259,18 @@ static int receive_data(int f_in, char *
+@@ -247,8 +261,18 @@ static int receive_data(int f_in, char *
                goto report_write_error;
  
  #ifdef HAVE_FTRUNCATE
@@ -156,7 +156,7 @@ To use this patch, run these commands for a successful build:
        if (do_progress)
 --- old/rsync.h
 +++ new/rsync.h
-@@ -554,6 +554,10 @@ struct idev_node {
+@@ -568,6 +568,10 @@ struct ht_int64_node {
  #define ACLS_NEED_MASK 1
  #endif
  
@@ -164,20 +164,20 @@ To use this patch, run these commands for a successful build:
 +#define SUPPORT_PREALLOCATION 1
 +#endif
 +
- #define GID_NONE ((gid_t)-1)
  union file_extras {
+       int32 num;
+       uint32 unum;
 --- old/rsync.yo
 +++ new/rsync.yo
-@@ -334,6 +334,7 @@ to the detailed description below for a 
-  -O, --omit-dir-times        omit directories when preserving times
+@@ -352,6 +352,7 @@ to the detailed description below for a 
       --super                 receiver attempts super-user activities
+      --fake-super            store/recover privileged attrs using xattrs
   -S, --sparse                handle sparse files efficiently
 +     --preallocate           posix_fallocate dest files before writing
   -n, --dry-run               show what would have been transferred
   -W, --whole-file            copy files whole (without rsync algorithm)
   -x, --one-file-system       don't cross filesystem boundaries
-@@ -926,6 +927,19 @@ NOTE: Don't use this option when the des
+@@ -1014,6 +1015,19 @@ NOTE: Don't use this option when the des
  filesystem. It doesn't seem to handle seeks over null regions
  correctly and ends up corrupting the files.
  
@@ -209,7 +209,7 @@ To use this patch, run these commands for a successful build:
  int human_readable = 0;
 --- old/util.c
 +++ new/util.c
-@@ -24,6 +24,7 @@
+@@ -25,6 +25,7 @@
  
  extern int verbose;
  extern int dry_run;
@@ -217,7 +217,7 @@ To use this patch, run these commands for a successful build:
  extern int module_id;
  extern int modify_window;
  extern int relative_paths;
-@@ -269,6 +270,10 @@ int copy_file(const char *source, const 
+@@ -271,6 +272,10 @@ int copy_file(const char *source, const 
        int ofd;
        char buf[1024 * 8];
        int len;   /* Number of bytes read into `buf'. */
@@ -226,9 +226,9 @@ To use this patch, run these commands for a successful build:
 +      int offset = 0;
 +#endif
  
-       ifd = do_open(source, O_RDONLY, 0);
-       if (ifd == -1) {
-@@ -288,7 +293,27 @@ int copy_file(const char *source, const 
+       if ((ifd = do_open(source, O_RDONLY, 0)) < 0) {
+               rsyserr(FERROR, errno, "open %s", full_fname(source));
+@@ -290,7 +295,27 @@ int copy_file(const char *source, const 
                return -1;
        }
  
@@ -256,7 +256,7 @@ To use this patch, run these commands for a successful build:
                if (full_write(ofd, buf, len) < 0) {
                        rsyserr(FERROR, errno, "write %s", full_fname(dest));
                        close(ifd);
-@@ -309,6 +334,16 @@ int copy_file(const char *source, const 
+@@ -311,6 +336,16 @@ int copy_file(const char *source, const 
                        full_fname(source));
        }