On 12/01/15 01:31, Pádraig Brady wrote: > On 11/01/15 23:36, Vladimir A. Pavlov wrote: >> Hello, >> >> I have an issue with df (both in version 8.23 and in master branch). >> >> I have tmpfs mounted as /run . There is /run/cgs/httpd subdirectory in >> /run (just a subdirectory, not a tmpfs or another mount). This >> /run/cgs/httpd is bind-mounted to /usr/cgs/httpd/run. >> >> The current algorithm in df.c:filter_mount_list() chooses the bind >> mountpoint since it has the leading slash in the "device" name >> ("/run/cgs/httpd" vs "run") which is wrong in my setup. >> >> The similar (but not the same) issue is fixed by commit: >> http://git.savannah.gnu.org/cgit/coreutils.git/commit/src/df.c?id=ed1a495b3ccb2665a13229ca866f2115bd768d17 >> >> I guess the "let real devices with / in the name win" replacement branch >> should only be applied if mountpoints are the same as well. >> >> Below is the data to reproduce the bug. >> >> === /etc/mtab (partial) === >> run /run tmpfs rw,noatime,nodiratime,nodev,noexec,mode=0755,size=1m 0 0 >> /run/cgs/httpd /usr/cgs/httpd/run none rw,bind 0 0 >> ====== >> >> === Real output (git) === >> Filesystem Size Used Avail Use% Mounted on >> /run/cgs/httpd 1.0M 8.0K 1016K 1% /usr/cgs/httpd/run >> ====== >> >> === Expected output (with the attached patch applied) === >> Filesystem Size Used Avail Use% Mounted on >> run 1.0M 8.0K 1016K 1% /run >> ====== >> > > Thanks for the analysis and patch, > Current tests pass at least with it. > I'll analyse a little more, add tests and probably push.
df v8.24 will read /proc/self/mountinfo if available and so won't hit this issue in practise as the bind mount location won't be passed to, or presented by df. I.E. the "Filesystem" for a particular device id will not switch representations. thanks, Pádraig.