From ec1d4ef4651205d3815163d161edc538b5e4e665 Mon Sep 17 00:00:00 2001 From: jkar8572 Date: Mon, 26 Mar 2001 14:56:54 +0000 Subject: Fixed bugs in XFS quota option detection. --- quotaio_xfs.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'quotaio_xfs.c') diff --git a/quotaio_xfs.c b/quotaio_xfs.c index dc20f55..73c963e 100644 --- a/quotaio_xfs.c +++ b/quotaio_xfs.c @@ -19,6 +19,11 @@ #include "quotasys.h" #include "dqblk_xfs.h" +#define XFS_USRQUOTA(h) ((h)->qh_type == USRQUOTA && \ + (h)->qh_info.u.xfs_mdqi.qs_flags & XFS_QUOTA_UDQ_ACCT) +#define XFS_GRPQUOTA(h) ((h)->qh_type == GRPQUOTA && \ + (h)->qh_info.u.xfs_mdqi.qs_flags & XFS_QUOTA_GDQ_ACCT) + static int xfs_init_io(struct quota_handle *h); static int xfs_write_info(struct quota_handle *h); static struct dquot *xfs_read_dquot(struct quota_handle *h, qid_t id); @@ -94,6 +99,9 @@ static int xfs_write_info(struct quota_handle *h) struct xfs_kern_dqblk xdqblk; int qcmd; + if (!XFS_USRQUOTA(h) && !XFS_GRPQUOTA(h)) + return 0; + memset(&xdqblk, 0, sizeof(struct xfs_kern_dqblk)); xdqblk.d_btimer = h->qh_info.dqi_bgrace; @@ -116,6 +124,10 @@ static struct dquot *xfs_read_dquot(struct quota_handle *h, qid_t id) dquot->dq_id = id; dquot->dq_h = h; + + if (!XFS_USRQUOTA(h) && !XFS_GRPQUOTA(h)) + return dquot; + qcmd = QCMD(Q_XFS_GETQUOTA, h->qh_type); if (quotactl(qcmd, h->qh_quotadev, id, (void *)&xdqblk) < 0) { ; @@ -138,6 +150,9 @@ static int xfs_commit_dquot(struct dquot *dquot) qid_t id = dquot->dq_id; int qcmd; + if (!XFS_USRQUOTA(h) && !XFS_GRPQUOTA(h)) + return 0; + xfs_util2kerndqblk(&xdqblk, &dquot->dq_dqb); xdqblk.d_fieldmask |= FS_DQ_LIMIT_MASK; qcmd = QCMD(Q_XFS_SETQLIM, h->qh_type); @@ -181,6 +196,9 @@ static int xfs_scan_dquots(struct quota_handle *h, int (*process_dquot) (struct struct xfs_kern_dqblk d; int rd = 0; + if (!XFS_USRQUOTA(h) && !XFS_GRPQUOTA(h)) + return rd; + dq = get_empty_dquot(); dq->dq_h = h; if (h->qh_type == USRQUOTA) { -- cgit v1.2.3