[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] df: improve mount point selection with inaccurate mount list
From: |
Pádraig Brady |
Subject: |
[PATCH] df: improve mount point selection with inaccurate mount list |
Date: |
Mon, 18 Aug 2014 19:21:07 +0100 |
v8.23 has a test failure on Fedora rawhide build servers
in tests/df/skip-duplicate.sh. This was due to no '/'
entry being output by df. That was due to an inaccurate
/proc/mounts on the build environment as stat(/mnt/point)
identified all these /proc/mounts entries as having the
same device id:
/ rootfs
/ /dev/md1
/dev devtmpfs
/run tmpfs
/boot /dev/md0
/proc/filesystems /dev/md1
Since the device name on the right changes for a given id,
that causes the entries to be continually replaced, thus
resulting in no '/' entry. I'm guessing this is due to
the mock environment bind mounting unneeded or sensitive
items to a dummy file on the host / (/dev/md1) though
have not looked into those details.
So rather than relying on an accurate /proc/mounts,
the attached patch takes a more conservative replacement
approach and only swaps a new device entry when the
mount point matches. That should handle all practical
cases while also avoiding this situation.
* src/df.c (filter_mount_list): Only replace entries with
different device names when the mount point also matches.
---
src/df.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/src/df.c b/src/df.c
index 3ef5d33..76aac7b 100644
--- a/src/df.c
+++ b/src/df.c
@@ -646,7 +646,8 @@ filter_mount_list (bool devices_only)
|| (strlen (devlist->me->me_mountdir)
> strlen (me->me_mountdir))
/* or one overmounted on a different device. */
- || ! STREQ (devlist->me->me_devname, me->me_devname))
+ || (STREQ (me->me_mountdir, devlist->me->me_mountdir)
+ && ! STREQ (devlist->me->me_devname, me->me_devname)))
{
/* Discard mount entry for existing device. */
discard_me = devlist->me;
--
1.7.7.6
- [PATCH] df: improve mount point selection with inaccurate mount list,
Pádraig Brady <=