Subject: bug#19570: bug: df and bind mounts

From: Pádraig Brady <[email-masked]>
Date: Mon, 12 Jan 2015 01:31:19 +0000

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.

thanks!
Pádraig.