Subject: Re: bug#8208: Possible bug for df

From: Pádraig Brady <[email-masked]>
Date: Wed, 09 Mar 2011 16:20:54 +0000

On 09/03/11 09:36, Jesse Molina wrote:
> 
> The "df" tool will mismatch mounted devices when a specific device
> parameter is specified.
> 
> Here's some console output from running df;
> 
> [/var/log]
> shara@sorrows-->df -h /dev/md5
> Filesystem            Size  Used Avail Use% Mounted on
> /dev/md5              2.3T  1.7T  534G  76% /mnt/backup/bak5
> [/var/log]
> shara@sorrows-->df -h /dev/md5
> Filesystem            Size  Used Avail Use% Mounted on
> udev                  881M  372K  880M   1% /dev
> 
> 
> 
> In the second invocation, the /dev/md5 device had been dismounted, but
> the /dev filesystem is now being matched, when it should not be.
> 
> Expected behavior is to get non-zero exit code and print nothing, and/or
> an error on stderr that the device is not found.
> 
> Note that this was to be used in a script.  I tried with the -P flag,
> and the behavior is the same, in that the wrong mount is matched.

This is expected behavior. If the passed file is not a mount point itself,
df will go and find it's mount point, and report for that device.

If you want to enforce that the passed device node is mounted
then I suggest you ensure that the file system is the same as passed, like:

dev=/dev/md5
df_dev=$(df -P $dev | sed -n '2s/\([^ ]*\).*/\1/p')
test "$dev" = "$df_dev" || { echo "$dev not mounted" >&2; exit 1; }

cheers,
Pádraig.