mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-22 08:44:20 -05:00
xfs: convert open-coded xfs_rtword_t pointer accesses to helper
There are a bunch of places where we use open-coded logic to find a pointer to an xfs_rtword_t within a rt bitmap buffer. Convert all that to helper functions for better type safety. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
@@ -103,7 +103,6 @@ xfs_rtfind_back(
|
||||
int bit; /* bit number in the word */
|
||||
xfs_fileoff_t block; /* bitmap block number */
|
||||
struct xfs_buf *bp; /* buf for the block */
|
||||
xfs_rtword_t *bufp; /* starting word in buffer */
|
||||
int error; /* error value */
|
||||
xfs_rtxnum_t firstbit; /* first useful bit in the word */
|
||||
xfs_rtxnum_t i; /* current bit number rel. to start */
|
||||
@@ -121,12 +120,12 @@ xfs_rtfind_back(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
bufp = bp->b_addr;
|
||||
|
||||
/*
|
||||
* Get the first word's index & point to it.
|
||||
*/
|
||||
word = xfs_rtx_to_rbmword(mp, start);
|
||||
b = &bufp[word];
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
bit = (int)(start & (XFS_NBWORD - 1));
|
||||
len = start - limit + 1;
|
||||
/*
|
||||
@@ -173,9 +172,9 @@ xfs_rtfind_back(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
bufp = bp->b_addr;
|
||||
|
||||
word = mp->m_blockwsize - 1;
|
||||
b = &bufp[word];
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the previous word in the buffer.
|
||||
@@ -219,9 +218,9 @@ xfs_rtfind_back(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
bufp = bp->b_addr;
|
||||
|
||||
word = mp->m_blockwsize - 1;
|
||||
b = &bufp[word];
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the previous word in the buffer.
|
||||
@@ -278,7 +277,6 @@ xfs_rtfind_forw(
|
||||
int bit; /* bit number in the word */
|
||||
xfs_fileoff_t block; /* bitmap block number */
|
||||
struct xfs_buf *bp; /* buf for the block */
|
||||
xfs_rtword_t *bufp; /* starting word in buffer */
|
||||
int error; /* error value */
|
||||
xfs_rtxnum_t i; /* current bit number rel. to start */
|
||||
xfs_rtxnum_t lastbit; /* last useful bit in the word */
|
||||
@@ -296,12 +294,12 @@ xfs_rtfind_forw(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
bufp = bp->b_addr;
|
||||
|
||||
/*
|
||||
* Get the first word's index & point to it.
|
||||
*/
|
||||
word = xfs_rtx_to_rbmword(mp, start);
|
||||
b = &bufp[word];
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
bit = (int)(start & (XFS_NBWORD - 1));
|
||||
len = limit - start + 1;
|
||||
/*
|
||||
@@ -347,8 +345,9 @@ xfs_rtfind_forw(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
b = bufp = bp->b_addr;
|
||||
|
||||
word = 0;
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the previous word in the buffer.
|
||||
@@ -392,8 +391,9 @@ xfs_rtfind_forw(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
b = bufp = bp->b_addr;
|
||||
|
||||
word = 0;
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the next word in the buffer.
|
||||
@@ -541,7 +541,6 @@ xfs_rtmodify_range(
|
||||
int bit; /* bit number in the word */
|
||||
xfs_fileoff_t block; /* bitmap block number */
|
||||
struct xfs_buf *bp; /* buf for the block */
|
||||
xfs_rtword_t *bufp; /* starting word in buffer */
|
||||
int error; /* error value */
|
||||
xfs_rtword_t *first; /* first used word in the buffer */
|
||||
int i; /* current bit number rel. to start */
|
||||
@@ -560,12 +559,12 @@ xfs_rtmodify_range(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
bufp = bp->b_addr;
|
||||
|
||||
/*
|
||||
* Compute the starting word's address, and starting bit.
|
||||
*/
|
||||
word = xfs_rtx_to_rbmword(mp, start);
|
||||
first = b = &bufp[word];
|
||||
first = b = xfs_rbmblock_wordptr(bp, word);
|
||||
bit = (int)(start & (XFS_NBWORD - 1));
|
||||
/*
|
||||
* 0 (allocated) => all zeroes; 1 (free) => all ones.
|
||||
@@ -599,14 +598,15 @@ xfs_rtmodify_range(
|
||||
* Get the next one.
|
||||
*/
|
||||
xfs_trans_log_buf(tp, bp,
|
||||
(uint)((char *)first - (char *)bufp),
|
||||
(uint)((char *)b - (char *)bufp));
|
||||
(uint)((char *)first - (char *)bp->b_addr),
|
||||
(uint)((char *)b - (char *)bp->b_addr));
|
||||
error = xfs_rtbuf_get(mp, tp, ++block, 0, &bp);
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
first = b = bufp = bp->b_addr;
|
||||
|
||||
word = 0;
|
||||
first = b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the next word in the buffer
|
||||
@@ -639,14 +639,15 @@ xfs_rtmodify_range(
|
||||
* Get the next one.
|
||||
*/
|
||||
xfs_trans_log_buf(tp, bp,
|
||||
(uint)((char *)first - (char *)bufp),
|
||||
(uint)((char *)b - (char *)bufp));
|
||||
(uint)((char *)first - (char *)bp->b_addr),
|
||||
(uint)((char *)b - (char *)bp->b_addr));
|
||||
error = xfs_rtbuf_get(mp, tp, ++block, 0, &bp);
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
first = b = bufp = bp->b_addr;
|
||||
|
||||
word = 0;
|
||||
first = b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the next word in the buffer
|
||||
@@ -676,8 +677,9 @@ xfs_rtmodify_range(
|
||||
* Log any remaining changed bytes.
|
||||
*/
|
||||
if (b > first)
|
||||
xfs_trans_log_buf(tp, bp, (uint)((char *)first - (char *)bufp),
|
||||
(uint)((char *)b - (char *)bufp - 1));
|
||||
xfs_trans_log_buf(tp, bp,
|
||||
(uint)((char *)first - (char *)bp->b_addr),
|
||||
(uint)((char *)b - (char *)bp->b_addr - 1));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -775,7 +777,6 @@ xfs_rtcheck_range(
|
||||
int bit; /* bit number in the word */
|
||||
xfs_fileoff_t block; /* bitmap block number */
|
||||
struct xfs_buf *bp; /* buf for the block */
|
||||
xfs_rtword_t *bufp; /* starting word in buffer */
|
||||
int error; /* error value */
|
||||
xfs_rtxnum_t i; /* current bit number rel. to start */
|
||||
xfs_rtxnum_t lastbit; /* last useful bit in word */
|
||||
@@ -794,12 +795,12 @@ xfs_rtcheck_range(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
bufp = bp->b_addr;
|
||||
|
||||
/*
|
||||
* Compute the starting word's address, and starting bit.
|
||||
*/
|
||||
word = xfs_rtx_to_rbmword(mp, start);
|
||||
b = &bufp[word];
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
bit = (int)(start & (XFS_NBWORD - 1));
|
||||
/*
|
||||
* 0 (allocated) => all zero's; 1 (free) => all one's.
|
||||
@@ -845,8 +846,9 @@ xfs_rtcheck_range(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
b = bufp = bp->b_addr;
|
||||
|
||||
word = 0;
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the next word in the buffer.
|
||||
@@ -891,8 +893,9 @@ xfs_rtcheck_range(
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
b = bufp = bp->b_addr;
|
||||
|
||||
word = 0;
|
||||
b = xfs_rbmblock_wordptr(bp, word);
|
||||
} else {
|
||||
/*
|
||||
* Go on to the next word in the buffer.
|
||||
|
||||
@@ -158,6 +158,17 @@ xfs_rbmblock_to_rtx(
|
||||
return rbmoff << mp->m_blkbit_log;
|
||||
}
|
||||
|
||||
/* Return a pointer to a bitmap word within a rt bitmap block. */
|
||||
static inline xfs_rtword_t *
|
||||
xfs_rbmblock_wordptr(
|
||||
struct xfs_buf *bp,
|
||||
unsigned int index)
|
||||
{
|
||||
xfs_rtword_t *words = bp->b_addr;
|
||||
|
||||
return words + index;
|
||||
}
|
||||
|
||||
/*
|
||||
* Functions for walking free space rtextents in the realtime bitmap.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user