Skip to content
Snippets Groups Projects
  • Darrick J. Wong's avatar
    38a3218f
    xfs: don't over-report free space or inodes in statvfs · 38a3218f
    Darrick J. Wong authored and Frieder Schrempf's avatar Frieder Schrempf committed
    
    [ Upstream commit 4b8d867ca6e2fc6d152f629fdaf027053b81765a ]
    
    Emmanual Florac reports a strange occurrence when project quota limits
    are enabled, free space is lower than the remaining quota, and someone
    runs statvfs:
    
      # mkfs.xfs -f /dev/sda
      # mount /dev/sda /mnt -o prjquota
      # xfs_quota  -x -c 'limit -p bhard=2G 55' /mnt
      # mkdir /mnt/dir
      # xfs_io -c 'chproj 55' -c 'chattr +P' -c 'stat -vvvv' /mnt/dir
      # fallocate -l 19g /mnt/a
      # df /mnt /mnt/dir
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/sda         20G   20G  345M  99% /mnt
      /dev/sda        2.0G     0  2.0G   0% /mnt
    
    I think the bug here is that xfs_fill_statvfs_from_dquot unconditionally
    assigns to f_bfree without checking that the filesystem has enough free
    space to fill the remaining project quota.  However, this is a
    longstanding behavior of xfs so it's unclear what to do here.
    
    Cc: <stable@vger.kernel.org> # v2.6.18
    Fixes: 932f2c32 ("[XFS] statvfs component of directory/project quota support, code originally by Glen.")
    Reported-by: default avatarEmmanuel Florac <eflorac@intellique.com>
    Signed-off-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    38a3218f
    History
    xfs: don't over-report free space or inodes in statvfs
    Darrick J. Wong authored and Frieder Schrempf's avatar Frieder Schrempf committed
    
    [ Upstream commit 4b8d867ca6e2fc6d152f629fdaf027053b81765a ]
    
    Emmanual Florac reports a strange occurrence when project quota limits
    are enabled, free space is lower than the remaining quota, and someone
    runs statvfs:
    
      # mkfs.xfs -f /dev/sda
      # mount /dev/sda /mnt -o prjquota
      # xfs_quota  -x -c 'limit -p bhard=2G 55' /mnt
      # mkdir /mnt/dir
      # xfs_io -c 'chproj 55' -c 'chattr +P' -c 'stat -vvvv' /mnt/dir
      # fallocate -l 19g /mnt/a
      # df /mnt /mnt/dir
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/sda         20G   20G  345M  99% /mnt
      /dev/sda        2.0G     0  2.0G   0% /mnt
    
    I think the bug here is that xfs_fill_statvfs_from_dquot unconditionally
    assigns to f_bfree without checking that the filesystem has enough free
    space to fill the remaining project quota.  However, this is a
    longstanding behavior of xfs so it's unclear what to do here.
    
    Cc: <stable@vger.kernel.org> # v2.6.18
    Fixes: 932f2c32 ("[XFS] statvfs component of directory/project quota support, code originally by Glen.")
    Reported-by: default avatarEmmanuel Florac <eflorac@intellique.com>
    Signed-off-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>