]> git.ipfire.org Git - thirdparty/coreutils.git/commit
du: handle sub-bind-mount cycles gracefully
authorBoris Ranto <branto@redhat.com>
Mon, 1 Dec 2014 08:24:14 +0000 (09:24 +0100)
committerPádraig Brady <P@draigBrady.com>
Tue, 2 Dec 2014 01:01:35 +0000 (01:01 +0000)
commitdc1c0523a61932fb0c26a795b7e7391eadf2171a
tree0df0a12d1053bfb16c41f2336fbbd3b500d5227c
parent6f16c63963b0624cbcbf285fb936b79276c047de
du: handle sub-bind-mount cycles gracefully

This patch fixes the handling of sub-bind-mount cycles which are
incorrectly detected as the file system errors.  If you bind mount the
directory 'a' to its subdirectory 'a/b/c' and then run 'du a/b' you
will get the circular dependency warning even though nothing is wrong
with the file system.  This happens because the first directory that is
traversed twice in this case is not a bind mount but a child of bind
mount.  The solution is to traverse all the directories in the cycle
that fts detected and check whether they are not a (bind) mount.

* src/du.c (mount_point_in_fts_cycle): New function that checks whether
any of the directories in the cycle that fts detected is a mount point.
* src/du.c (process_file): Update the function to use the new function
that looks up all the directories in the fts cycle instead of only the
last one.
* tests/du/bind-mount-dir-cycle-v2.sh: New test case that exhibits the
described behavior.
* tests/local.mk: Reference the new root test.
* NEWS: Mention the bug fix.
NEWS
src/du.c
tests/du/bind-mount-dir-cycle-v2.sh [new file with mode: 0755]
tests/local.mk