copy: call extent_copy also when make_holes is false, ...
authorJim Meyering <meyering@redhat.com>
Sat, 22 Jan 2011 11:36:03 +0000 (12:36 +0100)
committerJim Meyering <meyering@redhat.com>
Sun, 30 Jan 2011 19:44:11 +0000 (20:44 +0100)
so that we benefit from using extents also when reading a sparse
input file with --sparse=never.
* src/copy.c (copy_reg): Remove erroneous test of "make_holes"
so that we call extent_copy also when make_holes is false.
Otherwise, what's the point of that parameter?

src/copy.c

index 71da00d..be7fdba 100644 (file)
@@ -868,23 +868,20 @@ copy_reg (char const *src_name, char const *dst_name,
 #endif
         }
 
-      if (make_holes)
+      bool require_normal_copy;
+      /* Perform efficient extent copy for sparse file, fall back to the
+         standard copy only if the initial extent scan fails.  If the
+         '--sparse=never' option was specified, we writing all data but
+         use extent copy if available to efficiently read.  */
+      if (extent_copy (source_desc, dest_desc, buf_size,
+                       src_open_sb.st_size, make_holes,
+                       src_name, dst_name, &require_normal_copy))
+        goto preserve_metadata;
+
+      if (! require_normal_copy)
         {
-          bool require_normal_copy;
-          /* Perform efficient extent copy for sparse file, fall back to the
-             standard copy only if the initial extent scan fails.  If the
-             '--sparse=never' option was specified, we writing all data but
-             use extent copy if available to efficiently read.  */
-          if (extent_copy (source_desc, dest_desc, buf_size,
-                           src_open_sb.st_size, make_holes,
-                           src_name, dst_name, &require_normal_copy))
-            goto preserve_metadata;
-
-          if (! require_normal_copy)
-            {
-              return_val = false;
-              goto close_src_and_dst_desc;
-            }
+          return_val = false;
+          goto close_src_and_dst_desc;
         }
 
       /* If not making a sparse file, try to use a more-efficient