From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: linux-xfs@vger.kernel.org, Christoph Hellwig <hch@infradead.org>
Subject: Re: [PATCH 5/7 V2] xfs: switch xfs_get_defquota to take explicit type
Date: Thu, 21 May 2020 19:29:46 -0700 [thread overview]
Message-ID: <20200522022946.GA8230@magnolia> (raw)
In-Reply-To: <58bbabff-ac0e-9ab4-8caa-9981ff7e2fe8@redhat.com>
On Thu, May 21, 2020 at 10:05:40AM -0500, Eric Sandeen wrote:
> xfs_get_defquota() currently takes an xfs_dquot, and from that obtains
> the type of default quota we should get (user/group/project).
>
> But early in init, we don't have access to a fully set up quota, so
> that's not possible. The next patch needs go set up default quota
> timers early, so switch xfs_get_defquota to take an explicit type
> and add a helper function to obtain that type from an xfs_dquot
> for the existing callers.
>
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Looks ok,
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
--D
> ---
>
> V2: Make hch's suggested tidiness changes.
>
> Yes I did run this through the quota tests again, still pass. :)
>
> diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c
> index 714eceacbab2..6196f7c52b24 100644
> --- a/fs/xfs/xfs_dquot.c
> +++ b/fs/xfs/xfs_dquot.c
> @@ -75,7 +75,7 @@ xfs_qm_adjust_dqlimits(
> int prealloc = 0;
>
> ASSERT(d->d_id);
> - defq = xfs_get_defquota(dq, q);
> + defq = xfs_get_defquota(q, xfs_dquot_type(dq));
>
> if (defq->bsoftlimit && !d->d_blk_softlimit) {
> d->d_blk_softlimit = cpu_to_be64(defq->bsoftlimit);
> diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
> index 6609b4bb1628..ac0b5e7f8522 100644
> --- a/fs/xfs/xfs_qm.c
> +++ b/fs/xfs/xfs_qm.c
> @@ -558,7 +558,7 @@ xfs_qm_set_defquota(
> return;
>
> ddqp = &dqp->q_core;
> - defq = xfs_get_defquota(dqp, qinf);
> + defq = xfs_get_defquota(qinf, xfs_dquot_type(dqp));
>
> /*
> * Timers and warnings have been already set, let's just set the
> diff --git a/fs/xfs/xfs_qm.h b/fs/xfs/xfs_qm.h
> index 3a850401b102..c6f83171357e 100644
> --- a/fs/xfs/xfs_qm.h
> +++ b/fs/xfs/xfs_qm.h
> @@ -113,6 +113,17 @@ xfs_quota_inode(xfs_mount_t *mp, uint dq_flags)
> return NULL;
> }
>
> +static inline int
> +xfs_dquot_type(struct xfs_dquot *dqp)
> +{
> + if (XFS_QM_ISUDQ(dqp))
> + return XFS_DQ_USER;
> + if (XFS_QM_ISGDQ(dqp))
> + return XFS_DQ_GROUP;
> + ASSERT(XFS_QM_ISPDQ(dqp));
> + return XFS_DQ_PROJ;
> +}
> +
> extern void xfs_trans_mod_dquot(struct xfs_trans *tp, struct xfs_dquot *dqp,
> uint field, int64_t delta);
> extern void xfs_trans_dqjoin(struct xfs_trans *, struct xfs_dquot *);
> @@ -164,19 +175,19 @@ extern int xfs_qm_scall_quotaon(struct xfs_mount *, uint);
> extern int xfs_qm_scall_quotaoff(struct xfs_mount *, uint);
>
> static inline struct xfs_def_quota *
> -xfs_get_defquota(struct xfs_dquot *dqp, struct xfs_quotainfo *qi)
> +xfs_get_defquota(struct xfs_quotainfo *qi, int type)
> {
> - struct xfs_def_quota *defq;
> -
> - if (XFS_QM_ISUDQ(dqp))
> - defq = &qi->qi_usr_default;
> - else if (XFS_QM_ISGDQ(dqp))
> - defq = &qi->qi_grp_default;
> - else {
> - ASSERT(XFS_QM_ISPDQ(dqp));
> - defq = &qi->qi_prj_default;
> + switch (type) {
> + case XFS_DQ_USER:
> + return &qi->qi_usr_default;
> + case XFS_DQ_GROUP:
> + return &qi->qi_grp_default;
> + case XFS_DQ_PROJ:
> + return &qi->qi_prj_default;
> + default:
> + ASSERT(0);
> + return NULL;
> }
> - return defq;
> }
>
> #endif /* __XFS_QM_H__ */
> diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c
> index bd0f005570af..6fa08ae0b5f5 100644
> --- a/fs/xfs/xfs_qm_syscalls.c
> +++ b/fs/xfs/xfs_qm_syscalls.c
> @@ -479,7 +479,7 @@ xfs_qm_scall_setqlim(
> goto out_unlock;
> }
>
> - defq = xfs_get_defquota(dqp, q);
> + defq = xfs_get_defquota(q, xfs_dquot_type(dqp));
> xfs_dqunlock(dqp);
>
> error = xfs_trans_alloc(mp, &M_RES(mp)->tr_qm_setqlim, 0, 0, 0, &tp);
> diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c
> index 20542076e32a..edde366ca8e9 100644
> --- a/fs/xfs/xfs_trans_dquot.c
> +++ b/fs/xfs/xfs_trans_dquot.c
> @@ -591,7 +591,7 @@ xfs_trans_dqresv(
>
> xfs_dqlock(dqp);
>
> - defq = xfs_get_defquota(dqp, q);
> + defq = xfs_get_defquota(q, xfs_dquot_type(dqp));
>
> if (flags & XFS_TRANS_DQ_RES_BLKS) {
> hardlimit = be64_to_cpu(dqp->q_core.d_blk_hardlimit);
>
>
next prev parent reply other threads:[~2020-05-22 2:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-21 2:35 [PATCH 0/7 V3] xfs: quota fixes and enhancements Eric Sandeen
2020-05-21 2:35 ` [PATCH 1/7] xfs: group quota should return EDQUOT when prj quota enabled Eric Sandeen
2020-05-21 2:35 ` [PATCH 2/7] xfs: always return -ENOSPC on project quota reservation failure Eric Sandeen
2020-05-21 2:35 ` [PATCH 3/7] xfs: fix up some whitespace in quota code Eric Sandeen
2020-05-21 2:35 ` [PATCH 4/7] xfs: pass xfs_dquot to xfs_qm_adjust_dqtimers Eric Sandeen
2020-05-21 2:35 ` [PATCH 5/7] xfs: switch xfs_get_defquota to take explicit type Eric Sandeen
2020-05-21 9:35 ` Christoph Hellwig
2020-05-21 15:05 ` [PATCH 5/7 V2] " Eric Sandeen
2020-05-21 15:18 ` Christoph Hellwig
2020-05-22 2:29 ` Darrick J. Wong [this message]
2020-05-21 2:35 ` [PATCH 6/7] xfs: per-type quota timers and warn limits Eric Sandeen
2020-05-21 9:36 ` Christoph Hellwig
2020-05-22 2:41 ` Darrick J. Wong
2020-05-21 2:35 ` [PATCH 7/7] xfs: allow individual quota grace period extension Eric Sandeen
2020-05-21 9:37 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200522022946.GA8230@magnolia \
--to=darrick.wong@oracle.com \
--cc=hch@infradead.org \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.