GNU bug report logs - #19570
bug: df and bind mounts

Previous Next

Package: coreutils;

Reported by: Vladimir A. Pavlov <pv4 <at> bk.ru>

Date: Sun, 11 Jan 2015 23:54:02 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Vladimir A. Pavlov <pv4 <at> bk.ru>
Subject: bug#19570: closed (Re: bug#19570: bug: df and bind mounts)
Date: Fri, 26 Jun 2015 17:30:07 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#19570: bug: df and bind mounts

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 19570 <at> debbugs.gnu.org.

-- 
19570: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19570
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Pádraig Brady <P <at> draigBrady.com>
To: "Vladimir A. Pavlov" <pv4 <at> bk.ru>, 19570-done <at> debbugs.gnu.org
Subject: Re: bug#19570: bug: df and bind mounts
Date: Fri, 26 Jun 2015 18:29:33 +0100
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.


[Message part 3 (message/rfc822, inline)]
From: Vladimir A. Pavlov <pv4 <at> bk.ru>
To: bug-coreutils <at> gnu.org
Subject: bug: df and bind mounts
Date: Mon, 12 Jan 2015 02:36:37 +0300
[Message part 4 (text/plain, inline)]
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
======

-- 
Vladimir A. Pavlov
[coreutils-8.23-df_bindmount_fix.patch (application/x-patch, attachment)]

This bug report was last modified 9 years and 335 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.