On Tue, Apr 22, 2014 at 01:48:38PM -0500, Eric Sandeen wrote:
> The Q_XQUOTARM quotactl was not working properly, because
> we weren't passing around proper flags. The xfs_fs_set_xstate()
> ioctl handler used the same flags for Q_XQUOTAON/OFF as
> well as for Q_XQUOTARM, but Q_XQUOTAON/OFF look for
> XFS_UQUOTA_ACCT, XFS_UQUOTA_ENFD, XFS_GQUOTA_ACCT etc,
> i.e. quota type + state, while Q_XQUOTARM looks only for
> the type of quota, i.e. XFS_DQ_USER, XFS_DQ_GROUP etc.
>
> Unfortunately these flag spaces overlap a bit, so we
> got semi-random results for Q_XQUOTARM; i.e. the value
> for XFS_DQ_USER == XFS_UQUOTA_ACCT, etc. yeargh.
>
> Add a new quotactl op vector specifically for the QUOTARM
> operation, since it operates with a different flag space.
>
> This has been broken more or less forever, AFAICT.
>
> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
Looks good for now:
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
If you have a spare cycle or two I think splitting quotaon and quotaoff might
not be an all that bad idea either.
|