From: "Darrick J. Wong" <djwong@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-xfs@vger.kernel.org, osandov@osandov.com
Subject: Re: [PATCH 6/8] xfs: use accessor functions for bitmap words
Date: Fri, 13 Oct 2023 09:58:51 -0700 [thread overview]
Message-ID: <20231013165851.GA11402@frogsfrogsfrogs> (raw)
In-Reply-To: <20231013042833.GE5562@lst.de>
On Fri, Oct 13, 2023 at 06:28:33AM +0200, Christoph Hellwig wrote:
> On Thu, Oct 12, 2023 at 03:11:06PM -0700, Darrick J. Wong wrote:
> > Hmm, so you want to go from:
> >
> > union xfs_rtword_ondisk *start, *end, *b;
> >
> > start = b = xfs_rbmblock_wordptr(bp, startword);
> > end = xfs_rbmblock_wordptr(bp, endword);
> >
> > while (b < end) {
> > somevalue = xfs_rtbitmap_getword(mp, b);
> > somevalue |= somemask;
> > xfs_rtbitmap_setword(mp, b, somevalue);
> > b++;
> > }
> >
> > xfs_trans_log_buf(tp, bp, start - bp->b_addr, b - bp->b_addr);
> >
> > to something like:
> >
> > for (word = startword; word <= endword; word++) {
> > somevalue = xfs_rtbitmap_getword(mp, b);
> > somevalue |= somemask;
> > xfs_rtbitmap_setword(mp, bp, word, somevalue);
> > }
> > xfs_rtbitmap_log_buf(tp, bp, startword, endword);
>
> Yes. (although xfs_rtbitmap_log_buf can't just take the words directly
> of course, and the xfs_rtbitmap_getword needs word and not the now
> not existing b).
>
> > I think that could be done with relatively little churn, though it's
> > unfortunate that the second version does 2x(shift + addition) each time
> > it goes through the loop instead of the pointer increment that the first
> > version does.
>
> I don't really think it matter compared to all the other overhead,
> and it keeps a much nicer API.
<nod> I suppose one could go the horrid iter function route to get
around the multiply, though at this point there's an awful lot of code
to do something very simple:
struct xfs_rbmword_cur {
struct xfs_buf *bp;
xfs_rtword_t *wordptr;
unsigned int endword;
unsigned int word;
};
static inline bool
xfs_rtbitmap_word_iter(
struct xfs_rbmword_cur *cur,
xfs_rtword_t *val)
{
if (cur->word >= cur->endword)
return false;
if (!cur->wordptr)
cur->wordptr = xfs_rbmblock_wordptr(cur->bp, cur->word);
*val = *cur->wordptr;
cur->word++;
cur->wordptr++;
return true;
}
static inline void
xfs_rtbitmap_word_set(
struct xfs_rbmword_cur *cur,
xfs_rtword_t val)
{
*(cur->wordptr - 1) = val;
}
Usage:
struct xfs_rbword_cur cur = {
.bp = bp,
.word = startword,
.endword = endword,
};
xfs_rtword_t val;
while (xfs_rtbitmap_word_iter(&cur, &val)) {
val |= somemask;
xfs_rtbitmap_word_set(cur, val);
}
xfs_rtbitmap_log_buf(tp, bp, startword, endword);
--D
next prev parent reply other threads:[~2023-10-13 16:58 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-11 17:57 [PATCHBOMB RFC]: xfs: realtime units cleanups Darrick J. Wong
2023-10-11 18:01 ` [PATCHSET RFC v1.0 0/3] xfs: minor bugfixes for rt stuff Darrick J. Wong
2023-10-11 18:02 ` [PATCH 1/3] xfs: bump max fsgeom struct version Darrick J. Wong
2023-10-12 4:51 ` Christoph Hellwig
2023-10-12 17:34 ` Darrick J. Wong
2023-10-11 18:02 ` [PATCH 2/3] xfs: prevent rt growfs when quota is enabled Darrick J. Wong
2023-10-12 4:51 ` Christoph Hellwig
2023-10-11 18:02 ` [PATCH 3/3] xfs: rt stubs should return negative errnos when rt disabled Darrick J. Wong
2023-10-12 4:52 ` Christoph Hellwig
2023-10-11 18:01 ` [PATCHSET RFC v1.0 0/7] xfs: clean up realtime type usage Darrick J. Wong
2023-10-11 18:02 ` [PATCH 1/7] xfs: make sure maxlen is still congruent with prod when rounding down Darrick J. Wong
2023-10-12 4:59 ` Christoph Hellwig
2023-10-12 17:31 ` Darrick J. Wong
2023-10-13 4:22 ` Christoph Hellwig
2023-10-11 18:03 ` [PATCH 2/7] xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h Darrick J. Wong
2023-10-12 6:33 ` Christoph Hellwig
2023-10-11 18:03 ` [PATCH 3/7] xfs: convert xfs_extlen_t to xfs_rtxlen_t in the rt allocator Darrick J. Wong
2023-10-12 5:00 ` Christoph Hellwig
2023-10-11 18:03 ` [PATCH 4/7] xfs: convert rt bitmap/summary block numbers to xfs_fileoff_t Darrick J. Wong
2023-10-12 5:01 ` Christoph Hellwig
2023-10-11 18:03 ` [PATCH 5/7] xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t Darrick J. Wong
2023-10-12 5:01 ` Christoph Hellwig
2023-10-11 18:04 ` [PATCH 6/7] xfs: rename xfs_verify_rtext to xfs_verify_rtbext Darrick J. Wong
2023-10-12 5:02 ` Christoph Hellwig
2023-10-11 18:04 ` [PATCH 7/7] xfs: convert rt extent numbers to xfs_rtxnum_t Darrick J. Wong
2023-10-12 5:03 ` Christoph Hellwig
2023-10-12 5:05 ` [PATCHSET RFC v1.0 0/7] xfs: clean up realtime type usage Christoph Hellwig
2023-10-12 22:30 ` Darrick J. Wong
2023-10-13 4:24 ` Christoph Hellwig
2023-10-17 0:48 ` Darrick J. Wong
2023-10-17 4:05 ` Christoph Hellwig
2023-10-11 18:01 ` [PATCHSET RFC v1.0 0/7] xfs: refactor rt extent unit conversions Darrick J. Wong
2023-10-11 18:04 ` [PATCH 1/7] xfs: create a helper to convert rtextents to rtblocks Darrick J. Wong
2023-10-12 5:10 ` Christoph Hellwig
2023-10-11 18:04 ` [PATCH 2/7] xfs: create a helper to compute leftovers of realtime extents Darrick J. Wong
2023-10-12 5:11 ` Christoph Hellwig
2023-10-12 17:40 ` Darrick J. Wong
2023-10-11 18:05 ` [PATCH 3/7] " Darrick J. Wong
2023-10-12 6:34 ` Christoph Hellwig
2023-10-11 18:05 ` [PATCH 4/7] xfs: create helpers to convert rt block numbers to rt extent numbers Darrick J. Wong
2023-10-12 5:17 ` Christoph Hellwig
2023-10-12 17:58 ` Darrick J. Wong
2023-10-13 4:25 ` Christoph Hellwig
2023-10-11 18:05 ` [PATCH 5/7] xfs: convert do_div calls to xfs_rtb_to_rtx helper calls Darrick J. Wong
2023-10-12 5:22 ` Christoph Hellwig
2023-10-12 18:10 ` Darrick J. Wong
2023-10-11 18:05 ` [PATCH 6/7] xfs: create rt extent rounding helpers for realtime extent blocks Darrick J. Wong
2023-10-12 5:22 ` Christoph Hellwig
2023-10-11 18:06 ` [PATCH 7/7] xfs: use shifting and masking when converting rt extents, if possible Darrick J. Wong
2023-10-12 5:25 ` Christoph Hellwig
2023-10-12 18:19 ` Darrick J. Wong
2023-10-16 17:19 ` Omar Sandoval
2023-10-17 0:51 ` Darrick J. Wong
2023-10-11 18:01 ` [PATCHSET RFC v1.0 0/8] xfs: refactor rtbitmap/summary macros Darrick J. Wong
2023-10-11 18:06 ` [PATCH 1/8] xfs: convert the rtbitmap block and bit macros to static inline functions Darrick J. Wong
2023-10-12 6:34 ` Christoph Hellwig
2023-10-11 18:06 ` [PATCH 2/8] xfs: remove XFS_BLOCKWSIZE and XFS_BLOCKWMASK macros Darrick J. Wong
2023-10-12 5:33 ` Christoph Hellwig
2023-10-12 18:20 ` Darrick J. Wong
2023-10-13 5:53 ` Christoph Hellwig
2023-10-17 0:49 ` Darrick J. Wong
2023-10-11 18:07 ` [PATCH 3/8] xfs: convert open-coded xfs_rtword_t pointer accesses to helper Darrick J. Wong
2023-10-12 5:39 ` Christoph Hellwig
2023-10-12 18:26 ` Darrick J. Wong
2023-10-11 18:07 ` [PATCH 4/8] xfs: convert rt summary macros to helpers Darrick J. Wong
2023-10-12 5:41 ` Christoph Hellwig
2023-10-11 18:07 ` [PATCH 5/8] xfs: create helpers for rtbitmap block/wordcount computations Darrick J. Wong
2023-10-12 5:44 ` Christoph Hellwig
2023-10-12 21:55 ` Darrick J. Wong
2023-10-13 4:26 ` Christoph Hellwig
2023-10-11 18:07 ` [PATCH 6/8] xfs: use accessor functions for bitmap words Darrick J. Wong
2023-10-12 6:19 ` Christoph Hellwig
2023-10-12 22:11 ` Darrick J. Wong
2023-10-13 4:28 ` Christoph Hellwig
2023-10-13 16:58 ` Darrick J. Wong [this message]
2023-10-11 18:08 ` [PATCH 7/8] xfs: create helpers for rtsummary block/wordcount computations Darrick J. Wong
2023-10-12 6:25 ` Christoph Hellwig
2023-10-12 22:18 ` Darrick J. Wong
2023-10-13 4:29 ` Christoph Hellwig
2023-10-13 17:11 ` Darrick J. Wong
2023-10-11 18:08 ` [PATCH 8/8] xfs: use accessor functions for summary info words Darrick J. Wong
2023-10-12 6:26 ` Christoph Hellwig
2023-10-12 22:21 ` Darrick J. Wong
-- strict thread matches above, loose matches on Subject: below --
2023-10-17 15:46 [PATCHSET RFC v1.1 0/8] xfs: refactor rtbitmap/summary macros Darrick J. Wong
2023-10-17 15:53 ` [PATCH 6/8] xfs: use accessor functions for bitmap words Darrick J. Wong
2023-10-17 18:53 ` Christoph Hellwig
2023-10-18 2:01 ` Darrick J. Wong
2023-10-18 4:50 ` Christoph Hellwig
2022-12-30 22:17 [PATCHSET v1.0 0/8] xfs: refactor rtbitmap/summary macros Darrick J. Wong
2022-12-30 22:17 ` [PATCH 6/8] xfs: use accessor functions for bitmap words 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=20231013165851.GA11402@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
--cc=osandov@osandov.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox