xfs: fix xfs_quota remove error
authorRyota Yamauchi <r-yamauchi@vf.jp.nec.com>
Fri, 30 Oct 2009 08:27:44 +0000 (09:27 +0100)
committerhch@lst.de <Christoph Hellwig>
Fri, 30 Oct 2009 08:27:44 +0000 (09:27 +0100)
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>
fs/xfs/linux-2.6/xfs_quotaops.c

index cb6e2cca214f4b82528571c11e7dcd3138c7bf37..13cc7b524d6e6fc32dcd9167cfff93548135e984 100644 (file)
@@ -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;