summaryrefslogtreecommitdiff
path: root/quotaio_xfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'quotaio_xfs.c')
-rw-r--r--quotaio_xfs.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/quotaio_xfs.c b/quotaio_xfs.c
index 4729317..62075b5 100644
--- a/quotaio_xfs.c
+++ b/quotaio_xfs.c
@@ -151,7 +151,17 @@ static int xfs_commit_dquot(struct dquot *dquot, int flags)
return 0;
xfs_util2kerndqblk(&xdqblk, &dquot->dq_dqb);
- xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK;
+ xdqblk.d_flags |= XFS_USRQUOTA(h) ? XFS_USER_QUOTA : XFS_GROUP_QUOTA;
+ xdqblk.d_id = id;
+ if (strcmp(h->qh_fstype, MNTTYPE_GFS2) == 0) {
+ if (flags & COMMIT_LIMITS) /* warn/limit */
+ xdqblk.d_fieldmask |= FS_DQ_BSOFT | FS_DQ_BHARD;
+ if (flags & COMMIT_USAGE) /* block usage */
+ xdqblk.d_fieldmask |= FS_DQ_BCOUNT;
+ } else {
+ xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK;
+ }
+
qcmd = QCMD(Q_XFS_SETQLIM, h->qh_type);
if (quotactl(qcmd, h->qh_quotadev, id, (void *)&xdqblk) < 0) {
;