summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--src/df.c13
2 files changed, 16 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 9274645a3..520e94669 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,10 @@ GNU coreutils NEWS -*- outline -*-
df displayed the symlink's device rather than that for the device node.
[This bug was present in "the beginning".]
+ df now processes disk device nodes correctly in the presence of bind mounts.
+ Now df shows the base mounted file system rather than the last one mounted.
+ [This bug was present in "the beginning".]
+
install now removes the target file if the strip program failed for any
reason. Before, that file was left behind, sometimes even with wrong
permissions.
diff --git a/src/df.c b/src/df.c
index 8eabcbbaa..969670e82 100644
--- a/src/df.c
+++ b/src/df.c
@@ -1062,10 +1062,21 @@ get_disk (char const *disk)
if (resolved && resolved[0] == '/')
disk = resolved;
+ size_t best_match_len = SIZE_MAX;
for (me = mount_list; me; me = me->me_next)
{
if (STREQ (disk, me->me_devname))
- best_match = me;
+ {
+ size_t len = strlen (me->me_mountdir);
+ if (len < best_match_len)
+ {
+ best_match = me;
+ if (len == 1) /* Traditional root. */
+ break;
+ else
+ best_match_len = len;
+ }
+ }
}
free (resolved);