+ union file_extras {
+ int32 num;
+ uint32 unum;
+--- old/rsync.yo
++++ new/rsync.yo
+@@ -357,6 +357,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
+@@ -993,6 +994,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.
+
++dit(bf(--preallocate)) This tells the receiver to allocate each destination
++file to its eventual size using bf(posix_fallocate)(3) before writing data
++to the file. If the receiver is remote, this nonstandard option only works
++if the receiver also has the preallocation patch. Furthermore, this option
++only works if the receiver found the bf(posix_fallocate)(3) call at
++configure time.
++
++Without this option on MS Windows, very large destination files tend to be
++broken into thousands of fragments; advising Windows ahead of time of the
++eventual file size using this option usually reduces the number of
++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.