Fixed failing hunks.
[rsync/rsync-patches.git] / preallocate.diff
index 8d1f423..6a3192d 100644 (file)
@@ -11,58 +11,57 @@ To use this patch, run these commands for a successful build:
 
 --- old/configure.in
 +++ new/configure.in
 
 --- old/configure.in
 +++ new/configure.in
-@@ -560,7 +560,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd strd
+@@ -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 \
      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
  
  AC_CHECK_FUNCS(getpgrp tcgetpgrp)
  if test $ac_cv_func_getpgrp = yes; then
 --- old/options.c
 +++ new/options.c
-@@ -69,6 +69,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 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;
-@@ -202,6 +203,7 @@ static void print_rsync_version(enum log
-       char const *acls = "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 *links = "no ";
+       char const *iconv = "no ";
        char const *ipv6 = "no ";
 +      char const *preallocation = "no ";
        STRUCT_STAT *dumstat;
  
        char const *ipv6 = "no ";
 +      char const *preallocation = "no ";
        STRUCT_STAT *dumstat;
  
- #ifdef HAVE_SOCKETPAIR
-@@ -228,6 +230,10 @@ static void print_rsync_version(enum log
-       ipv6 = "";
+ #if SUBPROTOCOL_VERSION != 0
+@@ -250,6 +252,9 @@ static void print_rsync_version(enum log
+ #ifdef ICONV_OPTION
+       iconv = "";
  #endif
  #endif
 +#ifdef SUPPORT_PREALLOCATION
 +      preallocation = "";
 +#endif
 +#ifdef SUPPORT_PREALLOCATION
 +      preallocation = "";
 +#endif
-+
-       rprintf(f, "%s  version %s  protocol version %d\n",
-               RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION);
-       rprintf(f, "Copyright (C) 1996-2007 by Andrew Tridgell, Wayne Davison, and others.\n");
-@@ -238,8 +244,8 @@ static void print_rsync_version(enum log
+       rprintf(f, "%s  version %s  protocol version %d%s\n",
+               RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
+@@ -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);
                (int)(sizeof (int64) * 8));
        rprintf(f, "    %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
                got_socketpair, hardlinks, links, ipv6, have_inplace);
--      rprintf(f, "    %sappend, %sACLs\n",
--              have_inplace, acls);
-+      rprintf(f, "    %sappend, %sACLs, %spreallocation\n",
-+              have_inplace, acls, 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());
  
  #ifdef MAINTAINER_MODE
        rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
-@@ -319,6 +325,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");
    rprintf(F," -S, --sparse                handle sparse files efficiently\n");
 +#ifdef SUPPORT_PREALLOCATION
 +  rprintf(F,"     --preallocate           posix_fallocate dest files before writing them\n");
@@ -70,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");
    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");
-@@ -479,6 +488,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 },
    {"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 },
-@@ -1161,6 +1171,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
  
        }
  #endif
  
@@ -94,19 +93,19 @@ 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");
        if (write_batch && read_batch) {
                snprintf(err_buf, sizeof err_buf,
                        "--write-batch and --read-batch can not be used together\n");
-@@ -1808,6 +1827,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";
 +
        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
 +++ new/receiver.c
        return;
  
 --- old/receiver.c
 +++ new/receiver.c
-@@ -43,6 +43,7 @@ extern int cleanup_got_literal;
+@@ -45,6 +45,7 @@ extern int cleanup_got_literal;
  extern int remove_source_files;
  extern int append_mode;
  extern int sparse_files;
  extern int remove_source_files;
  extern int append_mode;
  extern int sparse_files;
@@ -114,7 +113,7 @@ To use this patch, run these commands for a successful build:
  extern int keep_partial;
  extern int checksum_seed;
  extern int inplace;
  extern int keep_partial;
  extern int checksum_seed;
  extern int inplace;
-@@ -136,6 +137,19 @@ static int receive_data(int f_in, char *
+@@ -138,6 +139,19 @@ static int receive_data(int f_in, char *
        int32 i;
        char *map = NULL;
  
        int32 i;
        char *map = NULL;
  
@@ -134,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) {
        read_sum_head(f_in, &sum);
  
        if (fd_r >= 0 && size_r > 0) {
-@@ -243,8 +257,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
                goto report_write_error;
  
  #ifdef HAVE_FTRUNCATE
@@ -157,7 +156,7 @@ To use this patch, run these commands for a successful build:
        if (do_progress)
 --- old/rsync.h
 +++ new/rsync.h
        if (do_progress)
 --- old/rsync.h
 +++ new/rsync.h
-@@ -551,6 +551,10 @@ struct idev_node {
+@@ -568,6 +568,10 @@ struct ht_int64_node {
  #define ACLS_NEED_MASK 1
  #endif
  
  #define ACLS_NEED_MASK 1
  #endif
  
@@ -165,20 +164,20 @@ To use this patch, run these commands for a successful build:
 +#define SUPPORT_PREALLOCATION 1
 +#endif
 +
 +#define SUPPORT_PREALLOCATION 1
 +#endif
 +
- #define GID_NONE ((gid_t)-1)
  union file_extras {
  union file_extras {
+       int32 num;
+       uint32 unum;
 --- old/rsync.yo
 +++ new/rsync.yo
 --- old/rsync.yo
 +++ new/rsync.yo
-@@ -333,6 +333,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
       --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
   -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
-@@ -914,6 +915,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.
  
  filesystem. It doesn't seem to handle seeks over null regions
  correctly and ends up corrupting the files.
  
@@ -210,7 +209,7 @@ To use this patch, run these commands for a successful build:
  int human_readable = 0;
 --- old/util.c
 +++ new/util.c
  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;
  
  extern int verbose;
  extern int dry_run;
@@ -218,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;
  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'. */
        int ofd;
        char buf[1024 * 8];
        int len;   /* Number of bytes read into `buf'. */
@@ -227,9 +226,9 @@ To use this patch, run these commands for a successful build:
 +      int offset = 0;
 +#endif
  
 +      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;
        }
  
                return -1;
        }
  
@@ -257,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);
                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));
        }
  
                        full_fname(source));
        }