Subject: stat -c%m and bind mounts

From: Wim Hueskes <[email-masked]>
Date: Sun, 11 Dec 2016 19:07:21 +0100

stat -c%m does not seem to work correctly with bind mounts.
I have tested the following on Debian Jessie:

# mkdir /home/root ; touch /home/zero
# mount -o bind /root /home/root
# mount -o bind /dev/zero /home/zero
# mount -o bind /tmp /tmp
# ./src/df -P /home/root /home/zero /tmp
Filesystem     1024-blocks    Used Available Capacity Mounted on
/dev/sda1          7736784 2431152   4889584      34% /home/root
udev                 10240       0     10240       0% /home/zero
/dev/sda1          7736784 2431152   4889584      34% /tmp
# ./src/stat -c%m /home/root /home/zero /tmp
/
/
/
# ./src/stat --version
stat (GNU coreutils) 8.26.4-ca52f

The documentation explains:

stat outputs the alias for a bind mounted file, rather than the
initial mount point of its backing device. One can recursively call
stat until there is no change in output, to get the current base mount
point
(https://www.gnu.org/software/coreutils/manual/html_node/stat-invocation.html#index-bind-mount-1)

At least the documentation does not match the result. Note that the
documented behaviour would not work for /tmp bind mounted to itself.

But I also would expect to see /dev as the mount point of /home/zero
in the example above.

Related: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=6555#76
-- 
Best regards,
Wim