On 21/09/15 23:44, Pádraig Brady wrote: > On 21/09/15 21:04, Dave Chiluk wrote: >> Fixes an issue where bind mounts with shorter mount directories than the >> original mount are prioritized when running df. The root cause of this >> is that /proc/self/mountinfo now lists the filesystem device with bind >> mounts rather than the source directory. With /etc/mtab the source >> device was listed as the originating directory so this was not an issue. >> >> More information is available here. >> https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/1432871 >> --- >> src/df.c | 9 +++++++-- >> 1 file changed, 7 insertions(+), 2 deletions(-) >> >> diff --git a/src/df.c b/src/df.c >> index 2e541b9..4a3afa2 100644 >> --- a/src/df.c >> +++ b/src/df.c >> @@ -652,9 +652,14 @@ filter_mount_list (bool devices_only) >> else if ((strchr (me->me_devname, '/') >> /* let "real" devices with '/' in the name win. */ >> && ! strchr (devlist->me->me_devname, '/')) >> - /* let a shorter mountdir win. */ >> - || (strlen (devlist->me->me_mountdir) >> + /* let a shorter mountdir win. If it's mntroot is */ >> + /* also shorter. i.e. not a bind mount. */ >> + || ((strlen (devlist->me->me_mountdir) >> > strlen (me->me_mountdir)) >> + && (devlist->me->me_mntroot == NULL >> + || me->me_mntroot == NULL >> + || (strlen (devlist->me->me_mntroot) >> + >= strlen(me->me_mntroot)))) >> /* let an entry overmounted on a new device win... */ >> || (! STREQ (devlist->me->me_devname, me->me_devname) >> /* ... but only when matching an existing mnt point, >> > > This logic looks correct thanks. > I'll adjust the comment a bit and maybe refactor > all the conditions to a single nearer_device_root boolean. > > I'll push this later on, > with the associated gnulib update. Attached is the refactored patch, with also lots of adjustments to commit messages. I'll apply tomorrow. thanks, Pádraig.