Avoid preallocation on inplace file that is already long enough.
authorWayne Davison <wayned@samba.org>
Sun, 2 Jun 2013 19:37:48 +0000 (12:37 -0700)
committerWayne Davison <wayned@samba.org>
Sun, 2 Jun 2013 19:37:48 +0000 (12:37 -0700)
receiver.c

index 5ba370bacc5eda82d5d621e9a51d121fe89a890f..622f462a3bd7440f648c7734fb2f838db9bc9b11 100644 (file)
@@ -241,7 +241,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
        OFF_T preallocated_len = 0;
 #endif
 
-       if (preallocate_files && fd != -1 && total_size > 0) {
+       if (preallocate_files && fd != -1 && total_size > 0 && (!inplace || total_size > size_r)) {
                /* Try to preallocate enough space for file's eventual length.  Can
                 * reduce fragmentation on filesystems like ext4, xfs, and NTFS. */
                if (do_fallocate(fd, 0, total_size) == 0) {