From: "Darrick J. Wong" <djwong@kernel.org>
To: Eric Sandeen <sandeen@sandeen.net>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 42/45] libxfs: replace XFS_BUF_SET_ADDR with a function
Date: Fri, 28 Jan 2022 15:04:05 -0800 [thread overview]
Message-ID: <20220128230405.GM13540@magnolia> (raw)
In-Reply-To: <217c0998-4795-c85c-54cb-45b47ba99ac8@sandeen.net>
On Fri, Jan 28, 2022 at 02:53:02PM -0600, Eric Sandeen wrote:
> On 1/19/22 6:21 PM, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Replace XFS_BUF_SET_ADDR with a new function that will set the buffer
> > block number correctly, then port the two users to it.
>
> Ok, this is in preparation for later adding more to the
> function (saying "set it correctly" confused me a little, because
> the function looks equivalent to the macro....)
>
> ...
> > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> > index 63895f28..057b3b09 100644
> > --- a/mkfs/xfs_mkfs.c
> > +++ b/mkfs/xfs_mkfs.c
> > @@ -3505,8 +3505,8 @@ alloc_write_buf(
> > error);
> > exit(1);
> > }
> > - bp->b_bn = daddr;
> > - bp->b_maps[0].bm_bn = daddr;
> > +
> > + xfs_buf_set_daddr(bp, daddr);
>
> This *looks* a little like a functional change, since you dropped
> setting of the bp->b_maps[0].bm_bn. But since we get here with a
> single buffer, not a map of buffers, I ... think that at this point,
> nobody will be looking at b_maps[0].bm_bn anyway?
>
> But I'm not quite sure. I also notice xfs_get_aghdr_buf() in the kernel
> setting both b_bn and b_maps[0].bm_bn upstream, for similar purposes.
>
> Can you sanity-check me a little here?
This whole thing is as twisty as a pretzel driving into the mountains.
The end game is that b_bn is actually the cache key for the xfs_buf
structure, so ultimately we don't want anyone accessing it other than
the cache management functions. Hence we spend the next two patches
kicking everybody off of b_bn and then rename it to b_cache_key. Anyone
who wants the daddr address of an xfs_buf (cached or uncached) is
supposed to use bp->b_maps[0].bm_bn (or xfs_buf_daddr/xfs_buf_set_daddr)
after that point.
xfs_get_aghdr_buf (in xfs_ag.c) encodes that rather than setting up a
one-liner helper because that's the only place in the kernel where we
call xfs_buf_get_uncached. By contrast, userspace needs to set a
buffer's daddr(ess) from mkfs and libxlog, so (I guess) that's why the
helper is still useful.
*However* at this point in the game, most people still use b_bn
(incorrectly) so that's probably why alloc_write_buf sets both.
I guess this patch should have replaced only the "b_bn = daddr" part,
and in the next patch removed the "bp->b_maps[0].bm_bn = daddr" line.
After all that, b_bn of the uncached buffer will be NULLDADDR, like it's
supposed to be.
--D
> Thanks,
> -Eric
>
> > return bp;
> > }
> >
next prev parent reply other threads:[~2022-01-28 23:04 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-20 0:17 [PATCHSET 00/45] xfsprogs: sync libxfs with 5.15 Darrick J. Wong
2022-01-20 0:17 ` [PATCH 01/45] xfsprogs: fix static build problems caused by liburcu Darrick J. Wong
2022-01-20 0:17 ` [PATCH 02/45] xfs_{copy,db,logprint,repair}: pass xfs_mount pointers instead of xfs_sb pointers Darrick J. Wong
2022-01-28 22:01 ` Eric Sandeen
2022-01-20 0:17 ` [PATCH 03/45] xfs: remove support for disabling quota accounting on a mounted file system Darrick J. Wong
2022-01-20 0:17 ` [PATCH 04/45] xfs: remove the active vs running quota differentiation Darrick J. Wong
2022-01-20 0:17 ` [PATCH 05/45] xfs: replace kmem_alloc_large() with kvmalloc() Darrick J. Wong
2022-01-20 0:17 ` [PATCH 06/45] xfs: allow setting and clearing of log incompat feature flags Darrick J. Wong
2022-01-20 0:18 ` [PATCH 07/45] xfs: add attr state machine tracepoints Darrick J. Wong
2022-01-20 0:18 ` [PATCH 08/45] xfs: Rename __xfs_attr_rmtval_remove Darrick J. Wong
2022-01-20 0:18 ` [PATCH 09/45] xfs: make xfs_rtalloc_query_range input parameters const Darrick J. Wong
2022-01-20 0:18 ` [PATCH 10/45] xfs: make the key parameters to all btree key comparison functions const Darrick J. Wong
2022-01-20 0:18 ` [PATCH 11/45] xfs: make the key parameters to all btree query range " Darrick J. Wong
2022-01-20 0:18 ` [PATCH 12/45] xfs: make the record pointer passed to query_range " Darrick J. Wong
2022-01-20 0:18 ` [PATCH 13/45] xfs: mark the record passed into btree init_key functions as const Darrick J. Wong
2022-01-20 0:18 ` [PATCH 14/45] xfs: make the keys and records passed to btree inorder functions const Darrick J. Wong
2022-01-20 0:18 ` [PATCH 15/45] xfs: mark the record passed into xchk_btree functions as const Darrick J. Wong
2022-01-20 0:18 ` [PATCH 16/45] xfs: make the pointer passed to btree set_root functions const Darrick J. Wong
2022-01-20 0:18 ` [PATCH 17/45] xfs: make the start pointer passed to btree alloc_block " Darrick J. Wong
2022-01-20 0:19 ` [PATCH 18/45] xfs: make the start pointer passed to btree update_lastrec " Darrick J. Wong
2022-01-20 0:19 ` [PATCH 19/45] xfs: constify btree function parameters that are not modified Darrick J. Wong
2022-01-20 0:19 ` [PATCH 20/45] xfs: resolve fork names in trace output Darrick J. Wong
2022-01-20 0:19 ` [PATCH 21/45] xfs: sb verifier doesn't handle uncached sb buffer Darrick J. Wong
2022-01-20 0:19 ` [PATCH 22/45] xfs: rename xfs_has_attr() Darrick J. Wong
2022-01-20 0:19 ` [PATCH 23/45] xfs: rework attr2 feature and mount options Darrick J. Wong
2022-01-20 0:19 ` [PATCH 24/45] xfs: reflect sb features in xfs_mount Darrick J. Wong
2022-01-20 0:19 ` [PATCH 25/45] xfs: replace xfs_sb_version checks with feature flag checks Darrick J. Wong
2022-01-20 0:19 ` [PATCH 26/45] xfs: convert mount flags to features Darrick J. Wong
2022-01-31 22:59 ` Eric Sandeen
2022-01-31 23:31 ` Darrick J. Wong
2022-01-20 0:19 ` [PATCH 27/45] xfs: convert remaining mount flags to state flags Darrick J. Wong
2022-01-20 0:19 ` [PATCH 28/45] xfs: replace XFS_FORCED_SHUTDOWN with xfs_is_shutdown Darrick J. Wong
2022-01-20 0:20 ` [PATCH 29/45] xfs: convert xfs_fs_geometry to use mount feature checks Darrick J. Wong
2022-01-20 0:20 ` [PATCH 30/45] xfs: open code sb verifier " Darrick J. Wong
2022-01-20 0:20 ` [PATCH 31/45] xfs: convert xfs_sb_version_has checks to use mount features Darrick J. Wong
2022-01-20 0:20 ` [PATCH 32/45] libxlog: replace xfs_sb_version checks with feature flag checks Darrick J. Wong
2022-01-28 22:03 ` Eric Sandeen
2022-01-20 0:20 ` [PATCH 33/45] libxfs: " Darrick J. Wong
2022-01-28 22:13 ` Eric Sandeen
2022-01-28 22:18 ` Darrick J. Wong
2022-01-20 0:20 ` [PATCH 34/45] xfs_{copy,db,logprint,repair}: " Darrick J. Wong
2022-01-28 22:16 ` Eric Sandeen
2022-01-20 0:20 ` [PATCH 35/45] xfs: remove unused xfs_sb_version_has wrappers Darrick J. Wong
2022-01-20 0:20 ` [PATCH 36/45] xfs: introduce xfs_sb_is_v5 helper Darrick J. Wong
2022-01-20 0:20 ` [PATCH 37/45] xfs: kill xfs_sb_version_has_v3inode() Darrick J. Wong
2022-01-20 0:20 ` [PATCH 38/45] libxfs: use opstate flags and functions for libxfs mount options Darrick J. Wong
2022-01-27 20:43 ` Eric Sandeen
2022-01-20 0:20 ` [PATCH 39/45] libxfs: remove pointless *XFS_MOUNT* flags Darrick J. Wong
2022-01-27 23:03 ` Eric Sandeen
2022-01-28 0:53 ` Darrick J. Wong
2022-01-28 20:01 ` Eric Sandeen
2022-01-28 21:59 ` Darrick J. Wong
2022-01-28 22:43 ` [PATCH v1.1 " Darrick J. Wong
2022-01-28 22:59 ` Eric Sandeen
2022-01-31 21:29 ` Eric Sandeen
2022-01-20 0:21 ` [PATCH 40/45] libxfs: clean up remaining LIBXFS_MOUNT flags Darrick J. Wong
2022-01-28 20:12 ` Eric Sandeen
2022-01-20 0:21 ` [PATCH 41/45] libxfs: always initialize internal buffer map Darrick J. Wong
2022-01-28 20:31 ` Eric Sandeen
2022-01-28 22:03 ` Darrick J. Wong
2022-01-28 22:27 ` Eric Sandeen
2022-01-31 20:30 ` Eric Sandeen
2022-01-20 0:21 ` [PATCH 42/45] libxfs: replace XFS_BUF_SET_ADDR with a function Darrick J. Wong
2022-01-28 20:53 ` Eric Sandeen
2022-01-28 23:04 ` Darrick J. Wong [this message]
2022-01-31 20:44 ` Eric Sandeen
2022-01-20 0:21 ` [PATCH 43/45] xfs: introduce xfs_buf_daddr() Darrick J. Wong
2022-01-20 0:21 ` [PATCH 44/45] xfs: convert bp->b_bn references to xfs_buf_daddr() Darrick J. Wong
2022-01-20 0:21 ` [PATCH 45/45] libxfs: rename buffer cache index variable b_bn Darrick J. Wong
2022-01-28 21:37 ` Eric Sandeen
2022-01-28 22:14 ` Darrick J. Wong
2022-01-28 22:31 ` Eric Sandeen
2022-01-28 20:54 ` [PATCHSET 00/45] xfsprogs: sync libxfs with 5.15 Eric Sandeen
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=20220128230405.GM13540@magnolia \
--to=djwong@kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@sandeen.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox