The following commit has been merged in the linux branch: commit c7ff91d722e44c98504e6e2c357b47e1988dfbbd Author: Ryota Yamauchi r-yamauchi@vf.jp.nec.com Date: Fri Oct 30 09:27:44 2009 +0100
xfs: fix xfs_quota remove error
The xfs_quota returns ENOSYS when remove command is executed. Reproducable with following steps.
# mount -t xfs -o uquota /dev/sda7 /mnt/mp1 # xfs_quota -x -c off -c remove XFS_QUOTARM: Function not implemented.
The remove command is allowed during quotaoff, but xfs_fs_set_xstate() checks whether quota is running, and it leads to ENOSYS.
To solve this problem, add a check for X_QUOTARM.
Signed-off-by: Ryota Yamauchi r-yamauchi@vf.jp.nec.com Signed-off-by: Utako Kusaka u-kusaka@wm.jp.nec.com Signed-off-by: Christoph Hellwig hch@lst.de
diff --git a/fs/xfs/linux-2.6/xfs_quotaops.c b/fs/xfs/linux-2.6/xfs_quotaops.c index cb6e2cc..13cc7b5 100644 --- a/fs/xfs/linux-2.6/xfs_quotaops.c +++ b/fs/xfs/linux-2.6/xfs_quotaops.c @@ -80,7 +80,7 @@ xfs_fs_set_xstate(
if (sb->s_flags & MS_RDONLY) return -EROFS; - if (!XFS_IS_QUOTA_RUNNING(mp)) + if (op != Q_XQUOTARM && !XFS_IS_QUOTA_RUNNING(mp)) return -ENOSYS; if (!capable(CAP_SYS_ADMIN)) return -EPERM;