]> git.ipfire.org Git - thirdparty/coreutils.git/commit
copy: detect smaller holes than the copy buffer size
authorPádraig Brady <P@draigBrady.com>
Thu, 2 Oct 2014 13:07:42 +0000 (14:07 +0100)
committerPádraig Brady <P@draigBrady.com>
Wed, 15 Oct 2014 01:19:16 +0000 (02:19 +0100)
commit759b0ac9e7f3fbd0f04090e3142087bf692e47bc
treea3d72b4d1a25bec8fb4101e8baecf90ee1a28afa
parentcb4fc9356f9167f1f92d42a7550c5f5f170179c3
copy: detect smaller holes than the copy buffer size

Previously cp would not detect runs of NULs that were
smaller than the buffer size used for I/O (currently 128KiB).

* src/copy.c (copy_reg): Use an independent hole_size, set to
st_blksize, to increase the chances of detecting a representable hole,
in a run of NULs read from the input.
(create_hole): A new function refactored from sparse_copy() and
extent_copy() so we have a single place to handle holes.
(sparse_copy): Adjust to loop over the larger input buffer
in chunks of the passed hole size.  Also adjust to only call
lseek once per hole, rather than at least once per input buffer.
* tests/cp/sparse.sh: Add test cases for various sparse chunk sizes.
* NEWS: Mention the improvement.
NEWS
src/copy.c
tests/cp/sparse.sh