Graham Cobb wrote: > Package: coreutils > Version: 8.5-1 > Severity: important > > Like many systems, my filesystem contains loops due to bind mounts (in my case > it is for scratchbox, the reporter of bug 563254 has a different reason, I > have had other reasons in the past as well). > > I use a backup script called dt-s3-backup.sh, which has been working for some > time but has suddenly broken due to the change in du's handling of filesystem > loops. > > Although I exclude the looped files from my backup, the script uses a du > command which crosses the filesystem loop. Previously, du silently ignored the > files below the loop -- the script depends on this behaviour and breaks > completely now that du returns an error. > > I know about the filesystem loop. It in no way represents any filesystem > corruption and the change in behaviour should not have been made without some > way to disable it. I do not object to the new behaviour being the default but > there needs to be an option to disable the error and silently ignore the > loop. > > A simple test case to reproduce this problem: > > mkdir -p /tmp/du-test/loop > echo hello >/tmp/du-test/a > mount -o bind /tmp /tmp/du-test/loop > du -s /tmp > umount /tmp/du-test/loop > > Note: there is no way to avoid this problem using the --exclude option as > excluding the directory does not stop du reporting the error. This can be > seen > by replacing the du command above with: > > du --exclude /tmp/du-test/loop -s /tmp > > It is possible to use "--exclude=/tmp/du-test" but that excludes too much -- > the du command needs to count files such as /tmp/du-test/a.
Thank you for the report and reproducer. That is a bug in how du's --exclude works in coreutils-8.1 through 8.5. It was fixed for the next release via this change by Paul Eggert: du: tune, and fix some -L bugs with dangling or cyclic symlinks http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=77428214f13e1 However, this particular fix was not noted in NEWS, so I'm adding an entry for it: >From 65b50c6cdd4a140a2974907423a1df1692b6d3ae Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyer...@redhat.com> Date: Thu, 30 Sep 2010 14:24:42 +0200 Subject: [PATCH] maint: mention the du-exclude--vs--cycle-dir fix * NEWS (Bug fixes): Mention the du-exclude--vs--cycle-dir fix. Reported by Graham Cobb in http://bugs.debian.org/598438, that bug was fixed by the 2010-07-24 commit, 77428214f, "du: tune, and fix some -L bugs with dangling or cyclic symlinks" --- NEWS | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/NEWS b/NEWS index 898ee09..11a8b74 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,10 @@ GNU coreutils NEWS -*- outline -*- du -H and -L now consistently count pointed-to files instead of symbolic links, and correctly diagnose dangling symlinks. + du --ignore=D now ignores directory D even when that directory is + found to be part of a directory cycle. Before, du would issue a + "NOTIFY YOUR SYSTEM MANAGER" diagnostic and fail. + tac would perform a double-free when given an input line longer than 16KiB. [bug introduced in coreutils-8.3] -- 1.7.3.293.gca9a76 -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org