Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
coreutils
coreutils-df_improve_mount_point_selection_with...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File coreutils-df_improve_mount_point_selection_with_inaccurate_mount_list.patch of Package coreutils
commit ed1a495b3ccb2665a13229ca866f2115bd768d17 Author: Pádraig Brady <P@draigBrady.com> Date: Mon Aug 18 17:59:26 2014 +0100 df: improve mount point selection with inaccurate mount list 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. diff --git a/src/df.c b/src/df.c index 3ef5d33..e907b94 100644 --- a/src/df.c +++ b/src/df.c @@ -640,13 +640,18 @@ filter_mount_list (bool devices_only) if (devlist) { - /* ...let the shorter mountdir win. */ + /* let "real" devices with '/' in the name win. */ if ((strchr (me->me_devname, '/') && ! strchr (devlist->me->me_devname, '/')) + /* let a shorter mountdir win. */ || (strlen (devlist->me->me_mountdir) > strlen (me->me_mountdir)) - /* or one overmounted on a different device. */ - || ! STREQ (devlist->me->me_devname, me->me_devname)) + /* let an entry overmounted on a different device win... */ + || (! STREQ (devlist->me->me_devname, me->me_devname) + /* ... but only when matching an exsiting mount point, to + avoid problematic replacement when given inaccurate mount + lists, seen with some chroot environments for example. */ + && STREQ (me->me_mountdir, devlist->me->me_mountdir))) { /* Discard mount entry for existing device. */ discard_me = devlist->me;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor