From: Brian Foster <bfoster@redhat.com>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>,
linux-xfs@vger.kernel.org, hch@infradead.org,
david@fromorbit.com
Subject: Re: [PATCH 02/13] xfs: create convenience wrappers for incore quota block reservations
Date: Thu, 28 Jan 2021 13:08:34 -0500 [thread overview]
Message-ID: <20210128180834.GA2619139@bfoster> (raw)
In-Reply-To: <161181367558.1523592.4554805913065385916.stgit@magnolia>
On Wed, Jan 27, 2021 at 10:01:15PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> Create a couple of convenience wrappers for creating and deleting quota
> block reservations against future changes.
>
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> ---
Reviewed-by: Brian Foster <bfoster@redhat.com>
> fs/xfs/libxfs/xfs_bmap.c | 10 ++++------
> fs/xfs/xfs_quota.h | 19 +++++++++++++++++++
> fs/xfs/xfs_reflink.c | 5 ++---
> 3 files changed, 25 insertions(+), 9 deletions(-)
>
>
> diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
> index 0410627c6fcc..6edf1b5711c8 100644
> --- a/fs/xfs/libxfs/xfs_bmap.c
> +++ b/fs/xfs/libxfs/xfs_bmap.c
> @@ -4097,8 +4097,7 @@ xfs_bmapi_reserve_delalloc(
> * blocks. This number gets adjusted later. We return if we haven't
> * allocated blocks already inside this loop.
> */
> - error = xfs_trans_reserve_quota_nblks(NULL, ip, (long)alen, 0,
> - XFS_QMOPT_RES_REGBLKS);
> + error = xfs_quota_reserve_blkres(ip, alen);
> if (error)
> return error;
>
> @@ -4144,8 +4143,7 @@ xfs_bmapi_reserve_delalloc(
> xfs_mod_fdblocks(mp, alen, false);
> out_unreserve_quota:
> if (XFS_IS_QUOTA_ON(mp))
> - xfs_trans_unreserve_quota_nblks(NULL, ip, (long)alen, 0,
> - XFS_QMOPT_RES_REGBLKS);
> + xfs_quota_unreserve_blkres(ip, alen);
> return error;
> }
>
> @@ -4937,8 +4935,8 @@ xfs_bmap_del_extent_delay(
> * sb counters as we might have to borrow some blocks for the
> * indirect block accounting.
> */
> - error = xfs_trans_unreserve_quota_nblks(NULL, ip, del->br_blockcount, 0,
> - isrt ? XFS_QMOPT_RES_RTBLKS : XFS_QMOPT_RES_REGBLKS);
> + ASSERT(!isrt);
> + error = xfs_quota_unreserve_blkres(ip, del->br_blockcount);
> if (error)
> return error;
> ip->i_delayed_blks -= del->br_blockcount;
> diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h
> index 5a62398940d0..159d338bf161 100644
> --- a/fs/xfs/xfs_quota.h
> +++ b/fs/xfs/xfs_quota.h
> @@ -108,6 +108,12 @@ extern void xfs_qm_mount_quotas(struct xfs_mount *);
> extern void xfs_qm_unmount(struct xfs_mount *);
> extern void xfs_qm_unmount_quotas(struct xfs_mount *);
>
> +static inline int
> +xfs_quota_reserve_blkres(struct xfs_inode *ip, int64_t dblocks)
> +{
> + return xfs_trans_reserve_quota_nblks(NULL, ip, dblocks, 0,
> + XFS_QMOPT_RES_REGBLKS);
> +}
> #else
> static inline int
> xfs_qm_vop_dqalloc(struct xfs_inode *ip, kuid_t kuid, kgid_t kgid,
> @@ -136,6 +142,13 @@ static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp,
> {
> return 0;
> }
> +
> +static inline int
> +xfs_quota_reserve_blkres(struct xfs_inode *ip, int64_t dblocks)
> +{
> + return 0;
> +}
> +
> #define xfs_qm_vop_create_dqattach(tp, ip, u, g, p)
> #define xfs_qm_vop_rename_dqattach(it) (0)
> #define xfs_qm_vop_chown(tp, ip, old, new) (NULL)
> @@ -157,6 +170,12 @@ static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp,
> xfs_trans_reserve_quota_bydquots(tp, mp, ud, gd, pd, nb, ni, \
> f | XFS_QMOPT_RES_REGBLKS)
>
> +static inline int
> +xfs_quota_unreserve_blkres(struct xfs_inode *ip, int64_t dblocks)
> +{
> + return xfs_quota_reserve_blkres(ip, -dblocks);
> +}
> +
> extern int xfs_mount_reset_sbqflags(struct xfs_mount *);
>
> #endif /* __XFS_QUOTA_H__ */
> diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
> index 183142fd0961..bea64ed5a57f 100644
> --- a/fs/xfs/xfs_reflink.c
> +++ b/fs/xfs/xfs_reflink.c
> @@ -508,9 +508,8 @@ xfs_reflink_cancel_cow_blocks(
> xfs_bmap_del_extent_cow(ip, &icur, &got, &del);
>
> /* Remove the quota reservation */
> - error = xfs_trans_unreserve_quota_nblks(NULL, ip,
> - del.br_blockcount, 0,
> - XFS_QMOPT_RES_REGBLKS);
> + error = xfs_quota_unreserve_blkres(ip,
> + del.br_blockcount);
> if (error)
> break;
> } else {
>
next prev parent reply other threads:[~2021-01-28 18:13 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-28 6:01 [PATCHSET v3 00/13] xfs: minor cleanups of the quota functions Darrick J. Wong
2021-01-28 6:01 ` [PATCH 01/13] xfs: clean up quota reservation callsites Darrick J. Wong
2021-01-28 6:01 ` [PATCH 02/13] xfs: create convenience wrappers for incore quota block reservations Darrick J. Wong
2021-01-28 18:08 ` Brian Foster [this message]
2021-01-28 6:01 ` [PATCH 03/13] xfs: remove xfs_trans_unreserve_quota_nblks completely Darrick J. Wong
2021-01-28 9:46 ` Christoph Hellwig
2021-01-28 18:08 ` Brian Foster
2021-01-28 6:01 ` [PATCH 04/13] xfs: clean up icreate quota reservation calls Darrick J. Wong
2021-01-28 18:09 ` Brian Foster
2021-01-28 6:01 ` [PATCH 05/13] xfs: fix up build warnings when quotas are disabled Darrick J. Wong
2021-01-28 18:09 ` Brian Foster
2021-01-28 18:22 ` Darrick J. Wong
2021-01-28 18:23 ` Christoph Hellwig
2021-01-28 6:01 ` [PATCH 06/13] xfs: reserve data and rt quota at the same time Darrick J. Wong
2021-01-28 9:49 ` Christoph Hellwig
2021-01-28 18:01 ` Darrick J. Wong
2021-01-28 18:10 ` Brian Foster
2021-01-28 18:52 ` Darrick J. Wong
2021-01-28 6:01 ` [PATCH 07/13] xfs: refactor common transaction/inode/quota allocation idiom Darrick J. Wong
2021-01-28 9:50 ` Christoph Hellwig
2021-01-28 18:22 ` Brian Foster
2021-01-28 6:01 ` [PATCH 08/13] xfs: allow reservation of rtblocks with xfs_trans_alloc_inode Darrick J. Wong
2021-01-28 9:51 ` Christoph Hellwig
2021-01-28 18:22 ` Brian Foster
2021-01-28 6:01 ` [PATCH 09/13] xfs: refactor reflink functions to use xfs_trans_alloc_inode Darrick J. Wong
2021-01-28 9:53 ` Christoph Hellwig
2021-01-28 18:06 ` Darrick J. Wong
2021-01-28 18:23 ` Brian Foster
2021-01-28 6:02 ` [PATCH 10/13] xfs: try worst case space reservation upfront in xfs_reflink_remap_extent Darrick J. Wong
2021-01-28 9:55 ` Christoph Hellwig
2021-01-28 18:23 ` Brian Foster
2021-01-28 6:02 ` [PATCH 11/13] xfs: refactor inode creation transaction/inode/quota allocation idiom Darrick J. Wong
2021-01-28 9:57 ` Christoph Hellwig
2021-01-28 18:18 ` Darrick J. Wong
2021-01-28 18:23 ` Brian Foster
2021-01-28 6:02 ` [PATCH 12/13] xfs: move xfs_qm_vop_chown_reserve to xfs_trans_dquot.c Darrick J. Wong
2021-01-28 9:58 ` Christoph Hellwig
2021-01-28 18:23 ` Brian Foster
2021-01-28 6:02 ` [PATCH 13/13] xfs: clean up xfs_trans_reserve_quota_chown a bit Darrick J. Wong
2021-01-28 10:00 ` Christoph Hellwig
2021-01-28 18:23 ` Brian Foster
-- strict thread matches above, loose matches on Subject: below --
2021-01-29 2:16 [PATCHSET v4 00/13] xfs: minor cleanups of the quota functions Darrick J. Wong
2021-01-29 2:16 ` [PATCH 02/13] xfs: create convenience wrappers for incore quota block reservations Darrick J. Wong
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=20210128180834.GA2619139@bfoster \
--to=bfoster@redhat.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=hch@infradead.org \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
/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.