Here's a snapshot of what should soon be tagged as coreutils-8.10. I expect to release 8.10 on Friday, so any testing you can do between now and then would be most welcome.
Since this changes how "cp" handles sparse files, it is particularly useful to build and run the tests on different types of file systems. You'll see significant benefit when copying sparse files on recent linux kernels (2.6.27 or newer) when using a source file system that supports the FIEMAP ioctl, mainly ext4, btrfs, xfs, ocfs2, gfs2. ext2 and ext3 are supposed to have FIEMAP support, too, but I haven't tested those. If you test with btrfs, you should expect one or two test failure unless you're using the very latest from fedora rawhide, in which case you'll see only 1 test failure (cp/sparse-fiemap; I'll work around that tomorrow). coreutils snapshot: (.gz files are here, too) http://meyering.net/cu/coreutils-ss.tar.xz 4.6 MB http://meyering.net/cu/coreutils-ss.tar.xz.sig http://meyering.net/cu/coreutils-8.9.77-4e9ab7.tar.xz There are .gz and .sig files here, too: http://people.redhat.com/meyering/cu/coreutils-ss.tar.xz http://people.redhat.com/meyering/cu/coreutils-8.9.77-4e9ab7.tar.xz Here's the NEWS so far: --------------------------------------------------------------------------- ** Bug fixes du would abort with a failed assertion when two conditions are met: part of the hierarchy being traversed is moved to a higher level in the directory tree, and there is at least one more command line directory argument following the one containing the moved sub-tree. [bug introduced in coreutils-5.1.0] join --header now skips the ordering check for the first line even if the other file is empty. [bug introduced in coreutils-8.5] rm -f no longer fails for EINVAL or EILSEQ on file systems that reject file names invalid for that file system. uniq -f NUM no longer tries to process fields after end of line. [bug introduced in coreutils-7.0] ** New features cp now copies sparse files efficiently on file systems with FIEMAP support (ext4, btrfs, xfs, ocfs2). Before, it had to read 2^20 bytes when copying a 1MiB sparse file. Now, it copies bytes only for the non-sparse sections of a file. Similarly, to induce a hole in the output file, it had to detect a long sequence of zero bytes. Now, it knows precisely where each hole in an input file is, and can reproduce them efficiently in the output file. mv also benefits when it resorts to copying, e.g., between file systems. join now supports -o 'auto' which will automatically infer the output format from the first line in each file, to ensure the same number of fields are output for each line. ** Changes in behavior join no longer reports disorder when one of the files is empty. This allows one to use join as a field extractor like: join -a1 -o 1.3,1.1 - /dev/null --------------------------------------------------------------------------- Changes in coreutils since v8.9: Andreas Schwab (1): tests: minor correction Jie Liu (3): cp: copy sparse files efficiently using the FIEMAP ioctl tests: add a new test for FIEMAP-copy copy.c: add FIEMAP_FLAG_SYNC to fiemap ioctl Jim Meyering (56): post-release administrivia du: don't abort when a subdir is renamed during traversal build: update gnulib submodule to latest doc: clean up HACKING guidelines tests: add a test for today's uniq bug uniq: replace a wasteful loop with simple calculation doc: show how to shred more efficiently doc: update NEWS build: update gnulib submodule to latest tests: avoid FP failure in new du test maint: use slightly more efficient process in README-release build: update gnulib submodule to latest build: update gnulib submodule to latest doc: fix wording in warning about potential conflict with built-in tail: avoid new diagnostic when applying -f to a pipe on linux-2.3.38 split: avoid a new, spurious warning from gcc-4.6.0 tests: avoid rare FP failure in new du test tests: avoid FP failure due to suspension tests: don't hide all trace of the vc_exe_in_TESTS test tests: remove obsolete uses of "$$" in temporary file names tests: exercise more of the new FIEMAP copying code tests: accommodate varying filefrag -v "flags" output tests: relax the root-tests cross-check copy.c: adjust comments, tweak semantics fiemap.h: include <stdint.h>, not <linux/types.h> build: distribute new file, fiemap.h build: distribute new test script, filefrag-extent-compare fiemap copy: don't let write failure go unreported; adjust style, etc. extent-scan: adjust naming and formatting copy: remove else-after-goto and adjust indentation copy: call extent_copy also when make_holes is false, ... copy: tweak variable name; improve a comment copy: don't allocate a separate buffer just for extent-based copy tests: ensure that FIEMAP-enabled cp copies a sparse file efficiently fiemap copy: rename some locals fiemap copy: simplify post-loop logic; improve comments fiemap copy: avoid a performance hit due to very small buffer fiemap copy: avoid leak-on-error copy: factor sparse-copying code into its own function, because copy: remove obsolete comment copy: make extent_copy use sparse_copy, rather than its own code tests: cp/fiemap: exercise previously-failing parts copy, tee: assume EINTR is always defined: remove #ifdefs build: update gnulib submodule to latest doc: NEWS: mention cp's improvement tests: remove duplicate fiemap-perf test tests: modernize sparse-fiemap test maint: update copyright year lists in new files tests: factor fiemap-related predicate into init.cfg maint: remove unused inclusion of "fiemap.h" tests: gfs2 also supports FIEMAP cp: fix copying a sparse file to a pipe tests: exercise a rarely-used corner of copy.c cp: always initialize extent_copy's output parameter build: update gnulib submodule to latest tests: correct part of fiemap-perf Nadav Har'El (1): rm: ignore errno related to invalid file names Ondřej Vašík (1): doc: specify how tr, echo, printf treat octal numbers Paul Eggert (4): build: update gnulib submodule to latest gnulib: Also use dtoastr and ldtoastr modules. This adjusts to the recent splitting of the ftoastr module into 3 <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00199.html>. * bootstrap.conf (gnulib_modules): Add dtoastr, ldtoastr, as coreutils needs all 3 modules now. manual: document floating point better copy.c: ensure proper alignment of fiemap buffer Pádraig Brady (9): maint: replace uses of ignore_ptr with ignore_value maint: suppress some clang scan-build warnings maint: trivial system header file cleanups maint: refactor to use read-file from gnulib join: add -o 'auto' to output a constant number of fields per line join: ensure --header skips the order check with empty files join: don't report disorder against an empty file doc: add alternatives for field processing not supported by cut cp: fix the buffer size used when writing zeros Sami Kerola (1): uniq: don't continue field processing after end of line jeff.liu (1): fiemap copy: add extent-scan.[ch], avoid a double-free and reorganize Changes in gnulib since v8.9: * gnulib fa6be5b...a036b76 (126): > update from texinfo > dup2: work around Haiku bug > doc: off_t is not available in eglibc 2.11.2 stdio.h. > ignore-value: add missing test dependency > mktime: clarify long_int width checking > ignore-value: Fix self-test. > TYPE_MAXIMUM: avoid theoretically undefined behavior > mktime: #undef mktime before #defining it > mktime: systematically normalize tm_isdst comparisons > mktime: fix some integer overflow issues and sidestep the rest > mktime: avoid infinite loop > rename, unlink, same-inode: Relicense. > mktime: avoid problems on NetBSD 5 / i386 > autoupdate > mktime: fix misspelling in comment > move-if-change: cope with concurrent mv of identical file. > users.txt: Mention sharutils. > doc: Update users.txt > Prepare for supporting FreeBSD 10. > Prepare for supporting FreeBSD 10. > vma-iter, get-rusage-as: Add OpenBSD support. > more make vars for makeinfo > regen > fcntl: work around Haiku F_DUPFD bugs > autoupdate > Enable memory leak tests on AIX. > Tests for module 'get-rusage-data'. > New module 'get-rusage-data'. > get-rusage-as: Allow for easier testing. > vma-iter: Treat Haiku like BeOS. > c-stack: fix regression on cygwin when libsigsegv is present > autoupdate > vma-iter: Avoid empty intervals. > u64: remove unnecessary #include > Allow the user to avoid the GNULIB_TEST_* macros. > New module 'vma-iter'. > uninorm: Tweak includes. > get-rusage-as: Improve on NetBSD. > xreadlink.h: remove unnecessary #include > maint.mk: add syntax-check rule: detect unnecessary #include <stddef.h> > get-rusage-as: Fix bug. > wctype: Ensure valid C syntax. > wctype: Ensure valid C syntax. > getopt: omit HAVE_OPTRESET, HAVE_GETOPT_CLIP from config.h > gl_CHECK_NEXT_HEADERS implies AC_CHECK_HEADERS_ONCE > maintainer-makefile: work with older git for submodule check > bootstrap: minor portability fixes > bootstrap: support --no-git option > strerror_r-posix: work with glibc 2.13 > uN_strstr: New unit tests. > Make uN_strstr functions O(n) worst-case. > Prepare for faster uN_strstr functions. > test-malloca: unset MALLOC_PERTURB_ to speed up test > ignore-value: remove dependency on stdint > maint.mk: adjust variable name to be consistent with other gl_ vars > ChangeLog: remove duplicate entry > maint.mk: make "check" depend on public-submodule-commit by default > mbfile, mbiter: Complete change from 2008-12-21. > update from texinfo > update from texinfo > init.sh: insert space between each function name and "()" > bootstrap: avoid failure when there is no .gitmodules file > update from texinfo > mountlist: clean up code formatting > mountlist: add support for Interix > maint.mk: improve the public-submodule-commit rule > include_next: Fix bug introduced on 2011-01-18. > Allow the user to avoid the GNULIB_TEST_* macros. > bootstrap: avoid failure when there is no .gitmodules file > assume <ctype.h>, ..., <time.h> exist > multiarch: remove AA_APPLE_UNIVERSAL_BUILD > c-stack: assume stack overflow if SA_SIGINFO unsupported > stdbool-tests: accomodate Haiku > binary-io: fix O_TEXT on Haiku > include_next: do not check for standard headers like stddef.h > ansi-c++-opt: skip C++ dependency style if C++ is unused > *printf-posix: Avoid test failures. Make tests work on MacOS X, Cygwin. > get-rusage-as: Improvement for Cygwin. > strftime: remove dependencies on multibyte modules > Tests for module 'get-rusage-as'. > New module 'get-rusage-as'. > sigaction: relax license from LGPLv3+ to LGPLv2+ > update from texinfo > autoupdate > filemode: Make function declarations usable in C++ mode. > save-cwd: no longer include "xgetcwd.h" > ftoastr: split into 3 modules ftoastr, dtoastr, ldtoastr > save-cwd: remove #if-!HAVE_FCHDIR'd code; use the fchdir module > openat, save-cwd: avoid xmalloc > openat: Increase OPENAT_BUFFER_SIZE from 512 to at least 1024 > doc: Update users.txt. > missing @item > document configmake in the manual instead of the source > Update to Unicode 6.0.0. > Update to Unicode 5.2.0. > New Unicode character properties, from Unicode 5.2.0. > New module 'unictype/property-changes-when-casemapped'. > New module 'unictype/property-changes-when-casefolded'. > New module 'unictype/property-changes-when-titlecased'. > New module 'unictype/property-changes-when-uppercased'. > New module 'unictype/property-changes-when-lowercased'. > New module 'unictype/property-case-ignorable'. > New module 'unictype/property-cased'. > Update to Unicode 5.2.0. > useless-if-before-free: fix typo in --help and make the internal, > uniwidth/width: Fix width of U+1D173..U+1D17A. > uninorm tests: Preserve copyright of Unicode data file. > gen-uni-tables: Oops, fix last commit. > gen-uni-tables: Prepare for Unicode 5.2.0. > unilbrk: Clarify gen-uni-tables.c code. > strtod: Restore errno when successfully parsing Infinity or NaN. > remove test: Avoid failure on HP-UX 11. > mkdir, mkdirat tests: Avoid failure on HP-UX 11.11. > ignore-value: clarify some comments > ignore-value: support aggregate types > maint.mk: improve sc_prohibit_strcmp regex > maint: fix ChangeLog order > signal: work around Haiku issue with SIGBUS > maint.mk: add pre-release check to ensure submodule commits are public > ignore-value: make ignore_value more generic; deprecate ignore_ptr > doc: regenerate INSTALL > Merge remote branch 'origin/coreutils-8.9' > Merge branch 'coreutils-8.9' > avoid an unnecessary sub-shell > rebuild > autoupdate
