From: cem@kernel.org
To: linux-xfs@vger.kernel.org
Subject: [PATCH 30/35] xfs: simplify rt bitmap/summary block accessor functions
Date: Thu, 15 Feb 2024 13:08:42 +0100 [thread overview]
Message-ID: <20240215120907.1542854-31-cem@kernel.org> (raw)
In-Reply-To: <20240215120907.1542854-1-cem@kernel.org>
From: "Darrick J. Wong" <djwong@kernel.org>
Source kernel commit: e2cf427c91494ea0d1173a911090c39665c5fdef
Simplify the calling convention of these functions since the
xfs_rtalloc_args structure contains the parameters we need.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
---
libxfs/xfs_rtbitmap.c | 61 ++++++++++++++++++++-----------------------
libxfs/xfs_rtbitmap.h | 24 ++++++++---------
2 files changed, 41 insertions(+), 44 deletions(-)
diff --git a/libxfs/xfs_rtbitmap.c b/libxfs/xfs_rtbitmap.c
index bc3ce7bce..f5d7e14ab 100644
--- a/libxfs/xfs_rtbitmap.c
+++ b/libxfs/xfs_rtbitmap.c
@@ -171,7 +171,7 @@ xfs_rtfind_back(
* Compute match value, based on the bit at start: if 1 (free)
* then all-ones, else all-zeroes.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
want = (incore & ((xfs_rtword_t)1 << bit)) ? -1 : 0;
/*
* If the starting position is not word-aligned, deal with the
@@ -226,7 +226,7 @@ xfs_rtfind_back(
/*
* Compute difference between actual and desired value.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if ((wdiff = incore ^ want)) {
/*
* Different, mark where we are and return.
@@ -265,7 +265,7 @@ xfs_rtfind_back(
/*
* Compute difference between actual and desired value.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if ((wdiff = (incore ^ want) & mask)) {
/*
* Different, mark where we are and return.
@@ -325,7 +325,7 @@ xfs_rtfind_forw(
* Compute match value, based on the bit at start: if 1 (free)
* then all-ones, else all-zeroes.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
want = (incore & ((xfs_rtword_t)1 << bit)) ? -1 : 0;
/*
* If the starting position is not word-aligned, deal with the
@@ -379,7 +379,7 @@ xfs_rtfind_forw(
/*
* Compute difference between actual and desired value.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if ((wdiff = incore ^ want)) {
/*
* Different, mark where we are and return.
@@ -416,7 +416,7 @@ xfs_rtfind_forw(
/*
* Compute difference between actual and desired value.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if ((wdiff = (incore ^ want) & mask)) {
/*
* Different, mark where we are and return.
@@ -437,16 +437,16 @@ xfs_rtfind_forw(
/* Log rtsummary counter at @infoword. */
static inline void
xfs_trans_log_rtsummary(
- struct xfs_trans *tp,
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int infoword)
{
+ struct xfs_buf *bp = args->sumbp;
size_t first, last;
- first = (void *)xfs_rsumblock_infoptr(bp, infoword) - bp->b_addr;
+ first = (void *)xfs_rsumblock_infoptr(args, infoword) - bp->b_addr;
last = first + sizeof(xfs_suminfo_t) - 1;
- xfs_trans_log_buf(tp, bp, first, last);
+ xfs_trans_log_buf(args->tp, bp, first, last);
}
/*
@@ -490,8 +490,7 @@ xfs_rtmodify_summary_int(
*/
infoword = xfs_rtsumoffs_to_infoword(mp, so);
if (delta) {
- xfs_suminfo_t val = xfs_suminfo_add(args->sumbp, infoword,
- delta);
+ xfs_suminfo_t val = xfs_suminfo_add(args, infoword, delta);
if (mp->m_rsum_cache) {
if (val == 0 && log == mp->m_rsum_cache[bbno])
@@ -499,11 +498,11 @@ xfs_rtmodify_summary_int(
if (val != 0 && log < mp->m_rsum_cache[bbno])
mp->m_rsum_cache[bbno] = log;
}
- xfs_trans_log_rtsummary(args->tp, args->sumbp, infoword);
+ xfs_trans_log_rtsummary(args, infoword);
if (sum)
*sum = val;
} else if (sum) {
- *sum = xfs_suminfo_get(args->sumbp, infoword);
+ *sum = xfs_suminfo_get(args, infoword);
}
return 0;
}
@@ -521,17 +520,17 @@ xfs_rtmodify_summary(
/* Log rtbitmap block from the word @from to the byte before @next. */
static inline void
xfs_trans_log_rtbitmap(
- struct xfs_trans *tp,
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int from,
unsigned int next)
{
+ struct xfs_buf *bp = args->rbmbp;
size_t first, last;
- first = (void *)xfs_rbmblock_wordptr(bp, from) - bp->b_addr;
- last = ((void *)xfs_rbmblock_wordptr(bp, next) - 1) - bp->b_addr;
+ first = (void *)xfs_rbmblock_wordptr(args, from) - bp->b_addr;
+ last = ((void *)xfs_rbmblock_wordptr(args, next) - 1) - bp->b_addr;
- xfs_trans_log_buf(tp, bp, first, last);
+ xfs_trans_log_buf(args->tp, bp, first, last);
}
/*
@@ -589,12 +588,12 @@ xfs_rtmodify_range(
/*
* Set/clear the active bits.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if (val)
incore |= mask;
else
incore &= ~mask;
- xfs_rtbitmap_setword(args->rbmbp, word, incore);
+ xfs_rtbitmap_setword(args, word, incore);
i = lastbit - bit;
/*
* Go on to the next block if that's where the next word is
@@ -605,8 +604,7 @@ xfs_rtmodify_range(
* Log the changed part of this block.
* Get the next one.
*/
- xfs_trans_log_rtbitmap(args->tp, args->rbmbp, firstword,
- word);
+ xfs_trans_log_rtbitmap(args, firstword, word);
error = xfs_rtbitmap_read_buf(args, ++block);
if (error)
return error;
@@ -627,7 +625,7 @@ xfs_rtmodify_range(
/*
* Set the word value correctly.
*/
- xfs_rtbitmap_setword(args->rbmbp, word, val);
+ xfs_rtbitmap_setword(args, word, val);
i += XFS_NBWORD;
/*
* Go on to the next block if that's where the next word is
@@ -638,8 +636,7 @@ xfs_rtmodify_range(
* Log the changed part of this block.
* Get the next one.
*/
- xfs_trans_log_rtbitmap(args->tp, args->rbmbp, firstword,
- word);
+ xfs_trans_log_rtbitmap(args, firstword, word);
error = xfs_rtbitmap_read_buf(args, ++block);
if (error)
return error;
@@ -659,19 +656,19 @@ xfs_rtmodify_range(
/*
* Set/clear the active bits.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if (val)
incore |= mask;
else
incore &= ~mask;
- xfs_rtbitmap_setword(args->rbmbp, word, incore);
+ xfs_rtbitmap_setword(args, word, incore);
word++;
}
/*
* Log any remaining changed bytes.
*/
if (word > firstword)
- xfs_trans_log_rtbitmap(args->tp, args->rbmbp, firstword, word);
+ xfs_trans_log_rtbitmap(args, firstword, word);
return 0;
}
@@ -808,7 +805,7 @@ xfs_rtcheck_range(
/*
* Compute difference between actual and desired value.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if ((wdiff = (incore ^ val) & mask)) {
/*
* Different, compute first wrong bit and return.
@@ -847,7 +844,7 @@ xfs_rtcheck_range(
/*
* Compute difference between actual and desired value.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if ((wdiff = incore ^ val)) {
/*
* Different, compute first wrong bit and return.
@@ -885,7 +882,7 @@ xfs_rtcheck_range(
/*
* Compute difference between actual and desired value.
*/
- incore = xfs_rtbitmap_getword(args->rbmbp, word);
+ incore = xfs_rtbitmap_getword(args, word);
if ((wdiff = (incore ^ val) & mask)) {
/*
* Different, compute first wrong bit and return.
diff --git a/libxfs/xfs_rtbitmap.h b/libxfs/xfs_rtbitmap.h
index b5505da7a..db2f8c924 100644
--- a/libxfs/xfs_rtbitmap.h
+++ b/libxfs/xfs_rtbitmap.h
@@ -175,10 +175,10 @@ xfs_rbmblock_to_rtx(
/* Return a pointer to a bitmap word within a rt bitmap block. */
static inline union xfs_rtword_raw *
xfs_rbmblock_wordptr(
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int index)
{
- union xfs_rtword_raw *words = bp->b_addr;
+ union xfs_rtword_raw *words = args->rbmbp->b_addr;
return words + index;
}
@@ -186,10 +186,10 @@ xfs_rbmblock_wordptr(
/* Convert an ondisk bitmap word to its incore representation. */
static inline xfs_rtword_t
xfs_rtbitmap_getword(
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int index)
{
- union xfs_rtword_raw *word = xfs_rbmblock_wordptr(bp, index);
+ union xfs_rtword_raw *word = xfs_rbmblock_wordptr(args, index);
return word->old;
}
@@ -197,11 +197,11 @@ xfs_rtbitmap_getword(
/* Set an ondisk bitmap word from an incore representation. */
static inline void
xfs_rtbitmap_setword(
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int index,
xfs_rtword_t value)
{
- union xfs_rtword_raw *word = xfs_rbmblock_wordptr(bp, index);
+ union xfs_rtword_raw *word = xfs_rbmblock_wordptr(args, index);
word->old = value;
}
@@ -248,10 +248,10 @@ xfs_rtsumoffs_to_infoword(
/* Return a pointer to a summary info word within a rt summary block. */
static inline union xfs_suminfo_raw *
xfs_rsumblock_infoptr(
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int index)
{
- union xfs_suminfo_raw *info = bp->b_addr;
+ union xfs_suminfo_raw *info = args->sumbp->b_addr;
return info + index;
}
@@ -259,10 +259,10 @@ xfs_rsumblock_infoptr(
/* Get the current value of a summary counter. */
static inline xfs_suminfo_t
xfs_suminfo_get(
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int index)
{
- union xfs_suminfo_raw *info = xfs_rsumblock_infoptr(bp, index);
+ union xfs_suminfo_raw *info = xfs_rsumblock_infoptr(args, index);
return info->old;
}
@@ -270,11 +270,11 @@ xfs_suminfo_get(
/* Add to the current value of a summary counter and return the new value. */
static inline xfs_suminfo_t
xfs_suminfo_add(
- struct xfs_buf *bp,
+ struct xfs_rtalloc_args *args,
unsigned int index,
int delta)
{
- union xfs_suminfo_raw *info = xfs_rsumblock_infoptr(bp, index);
+ union xfs_suminfo_raw *info = xfs_rsumblock_infoptr(args, index);
info->old += delta;
return info->old;
--
2.43.0
next prev parent reply other threads:[~2024-02-15 12:09 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-15 12:08 [PATCH 00/35] xfsprogs: libxfs-sync for 6.7 cem
2024-02-15 12:08 ` [PATCH 01/35] xfs: bump max fsgeom struct version cem
2024-02-15 12:08 ` [PATCH 02/35] xfs: hoist freeing of rt data fork extent mappings cem
2024-02-15 12:08 ` [PATCH 03/35] xfs: fix units conversion error in xfs_bmap_del_extent_delay cem
2024-02-15 12:08 ` [PATCH 04/35] xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h cem
2024-02-15 12:08 ` [PATCH 05/35] xfs: convert xfs_extlen_t to xfs_rtxlen_t in the rt allocator cem
2024-02-15 12:08 ` [PATCH 06/35] xfs: convert rt bitmap/summary block numbers to xfs_fileoff_t cem
2024-02-15 12:08 ` [PATCH 07/35] xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t cem
2024-02-15 12:08 ` [PATCH 08/35] xfs: rename xfs_verify_rtext to xfs_verify_rtbext cem
2024-02-15 12:08 ` [PATCH 09/35] xfs: convert rt extent numbers to xfs_rtxnum_t cem
2024-02-15 12:08 ` [PATCH 10/35] xfs: create a helper to convert rtextents to rtblocks cem
2024-02-15 12:08 ` [PATCH 11/35] xfs: create a helper to compute leftovers of realtime extents cem
2024-02-15 12:08 ` [PATCH 12/35] xfs: create a helper to convert extlen to rtextlen cem
2024-02-15 12:08 ` [PATCH 13/35] xfs: create helpers to convert rt block numbers to rt extent numbers cem
2024-02-15 12:08 ` [PATCH 14/35] xfs: convert do_div calls to xfs_rtb_to_rtx helper calls cem
2024-02-15 12:08 ` [PATCH 15/35] xfs: create rt extent rounding helpers for realtime extent blocks cem
2024-02-15 12:08 ` [PATCH 16/35] xfs: use shifting and masking when converting rt extents, if possible cem
2024-02-15 12:08 ` [PATCH 17/35] xfs: convert the rtbitmap block and bit macros to static inline functions cem
2024-02-15 12:08 ` [PATCH 18/35] xfs: remove XFS_BLOCKWSIZE and XFS_BLOCKWMASK macros cem
2024-02-15 12:08 ` [PATCH 19/35] xfs: convert open-coded xfs_rtword_t pointer accesses to helper cem
2024-02-15 12:08 ` [PATCH 20/35] xfs: convert rt summary macros to helpers cem
2024-02-15 12:08 ` [PATCH 21/35] xfs: convert to new timestamp accessors cem
2024-02-15 12:08 ` [PATCH 22/35] xfs: create helpers for rtbitmap block/wordcount computations cem
2024-02-15 12:08 ` [PATCH 23/35] xfs: create a helper to handle logging parts of rt bitmap/summary blocks cem
2024-02-15 12:08 ` [PATCH 24/35] xfs: use accessor functions for bitmap words cem
2024-02-15 12:08 ` [PATCH 25/35] xfs: create helpers for rtsummary block/wordcount computations cem
2024-02-15 12:08 ` [PATCH 26/35] xfs: use accessor functions for summary info words cem
2024-02-15 12:08 ` [PATCH 27/35] xfs: consolidate realtime allocation arguments cem
2024-02-15 12:08 ` [PATCH 28/35] xfs: cache last bitmap block in realtime allocator cem
2024-02-15 12:08 ` [PATCH 29/35] xfs: simplify xfs_rtbuf_get calling conventions cem
2024-02-15 12:08 ` cem [this message]
2024-02-15 12:08 ` [PATCH 31/35] xfs: invert the realtime summary cache cem
2024-02-15 12:08 ` [PATCH 32/35] xfs: factor out xfs_defer_pending_abort cem
2024-02-15 12:08 ` [PATCH 33/35] xfs: abort intent items when recovery intents fail cem
2024-02-15 12:08 ` [PATCH 34/35] xfs: fix internal error from AGFL exhaustion cem
2024-02-15 12:08 ` [PATCH 35/35] xfs: inode recovery does not validate the recovered inode cem
2024-02-16 7:11 ` [PATCH 00/35] xfsprogs: libxfs-sync for 6.7 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=20240215120907.1542854-31-cem@kernel.org \
--to=cem@kernel.org \
--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.