--- old/configure.in
+++ new/configure.in
-@@ -561,7 +561,7 @@ AC_CHECK_FUNCS(waitpid wait4 getcwd strd
+@@ -547,7 +547,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 getxattr \
+#ifdef SUPPORT_PREALLOCATION
+ rprintf(F," --preallocate posix_fallocate dest files before writing them\n");
+#endif
- rprintf(F," -n, --dry-run show what would have been transferred\n");
+ rprintf(F," -n, --dry-run perform a trial run with no changes made\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");
@@ -528,6 +536,7 @@ static struct poptOption long_options[]
extern int keep_partial;
extern int checksum_seed;
extern int inplace;
-@@ -138,6 +139,19 @@ static int receive_data(int f_in, char *
+@@ -175,6 +176,19 @@ static int receive_data(int f_in, char *
int32 i;
char *map = NULL;
read_sum_head(f_in, &sum);
if (fd_r >= 0 && size_r > 0) {
-@@ -247,8 +261,18 @@ static int receive_data(int f_in, char *
+@@ -284,8 +298,18 @@ static int receive_data(int f_in, char *
goto report_write_error;
#ifdef HAVE_FTRUNCATE
if (do_progress)
--- old/rsync.h
+++ new/rsync.h
-@@ -568,6 +568,10 @@ struct ht_int64_node {
+@@ -590,6 +590,10 @@ struct ht_int64_node {
#define ACLS_NEED_MASK 1
#endif
--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
+ -n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (without rsync algorithm)
-x, --one-file-system don't cross filesystem boundaries
-@@ -1014,6 +1015,19 @@ NOTE: Don't use this option when the des
+@@ -1022,6 +1023,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.
+fragments to one. However, on Linux, this option appears to just waste
+disk I/O.
+
- dit(bf(-n, --dry-run)) This tells rsync to not do any file transfers,
- instead it will just report the actions it would have taken.
-
+ dit(bf(-n, --dry-run)) This makes rsync perform a trial run that doesn't
+ make any changes (and produces mostly the same output as a real run). It
+ is most commonly used in combination with the bf(-v, --verbose) and/or
--- old/t_stub.c
+++ new/t_stub.c
@@ -22,6 +22,7 @@
extern int module_id;
extern int modify_window;
extern int relative_paths;
-@@ -271,6 +272,10 @@ int copy_file(const char *source, const
- int ofd;
+@@ -272,6 +273,10 @@ int copy_file(const char *source, const
+ int ifd;
char buf[1024 * 8];
int len; /* Number of bytes read into `buf'. */
+#ifdef SUPPORT_PREALLOCATION
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;
+@@ -293,7 +298,27 @@ int copy_file(const char *source, const
+ }
}
+#ifdef SUPPORT_PREALLOCATION
if (full_write(ofd, buf, len) < 0) {
rsyserr(FERROR, errno, "write %s", full_fname(dest));
close(ifd);
-@@ -311,6 +336,16 @@ int copy_file(const char *source, const
+@@ -314,6 +339,16 @@ int copy_file(const char *source, const
full_fname(source));
}