coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[coreutils] Re: Bug#598438: coreutils: new du corrupted filesystem warni


From: Jim Meyering
Subject: [coreutils] Re: Bug#598438: coreutils: new du corrupted filesystem warning breaks scripts
Date: Thu, 30 Sep 2010 14:40:09 +0200

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 <address@hidden>
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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]