diff options
-rw-r--r-- | src/copy.c | 5 | ||||
-rwxr-xr-x | tests/cp/fiemap-empty | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/copy.c b/src/copy.c index 9b53127c4..f6f9ea6f2 100644 --- a/src/copy.c +++ b/src/copy.c @@ -398,7 +398,10 @@ extent_copy (int src_fd, int dest_fd, char *buf, size_t buf_size, /* Treat an unwritten but allocated extent much like a hole. I.E. don't read, but don't convert to a hole in the destination, unless SPARSE_ALWAYS. */ - if (scan.ext_info[i].ext_flags & FIEMAP_EXTENT_UNWRITTEN) + /* For now, do not treat FIEMAP_EXTENT_UNWRITTEN specially, + because that (in combination with no sync) would lead to data + loss at least on XFS and ext4 when using 2.6.39-rc3 kernels. */ + if (0 && (scan.ext_info[i].ext_flags & FIEMAP_EXTENT_UNWRITTEN)) { empty_extent = true; last_ext_len = 0; diff --git a/tests/cp/fiemap-empty b/tests/cp/fiemap-empty index 64c3254c7..836668ef7 100755 --- a/tests/cp/fiemap-empty +++ b/tests/cp/fiemap-empty @@ -19,6 +19,11 @@ . "${srcdir=.}/init.sh"; path_prepend_ ../src print_ver_ cp +# FIXME: enable any part of this test that is still relevant, +# or, if none are relevant (now that cp does not handle unwritten +# extents), just remove the test altogether. +skip_test_ 'disabled for now' + touch fiemap_chk fiemap_capable_ fiemap_chk || skip_test_ 'this file system lacks FIEMAP support' |