xfs: rename buffer cache index variable b_bn
To stop external users from using b_bn as the disk address of the buffer, rename it to b_rhash_key to indicate that it is the buffer cache index, not the block number of the buffer. Code that needs the disk address should use xfs_buf_daddr() to obtain it. Do the rename and clean up any of the remaining internal b_bn users. Also clean up any remaining b_bn cruft that is now unused. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
parent
9343ee7690
commit
4c7f65aea7
@ -251,7 +251,7 @@ _xfs_buf_alloc(
|
||||
return error;
|
||||
}
|
||||
|
||||
bp->b_bn = map[0].bm_bn;
|
||||
bp->b_rhash_key = map[0].bm_bn;
|
||||
bp->b_length = 0;
|
||||
for (i = 0; i < nmaps; i++) {
|
||||
bp->b_maps[i].bm_bn = map[i].bm_bn;
|
||||
@ -459,7 +459,7 @@ _xfs_buf_obj_cmp(
|
||||
*/
|
||||
BUILD_BUG_ON(offsetof(struct xfs_buf_map, bm_bn) != 0);
|
||||
|
||||
if (bp->b_bn != map->bm_bn)
|
||||
if (bp->b_rhash_key != map->bm_bn)
|
||||
return 1;
|
||||
|
||||
if (unlikely(bp->b_length != map->bm_len)) {
|
||||
@ -481,7 +481,7 @@ static const struct rhashtable_params xfs_buf_hash_params = {
|
||||
.min_size = 32, /* empty AGs have minimal footprint */
|
||||
.nelem_hint = 16,
|
||||
.key_len = sizeof(xfs_daddr_t),
|
||||
.key_offset = offsetof(struct xfs_buf, b_bn),
|
||||
.key_offset = offsetof(struct xfs_buf, b_rhash_key),
|
||||
.head_offset = offsetof(struct xfs_buf, b_rhash_head),
|
||||
.automatic_shrinking = true,
|
||||
.obj_cmpfn = _xfs_buf_obj_cmp,
|
||||
@ -853,7 +853,9 @@ xfs_buf_readahead_map(
|
||||
|
||||
/*
|
||||
* Read an uncached buffer from disk. Allocates and returns a locked
|
||||
* buffer containing the disk contents or nothing.
|
||||
* buffer containing the disk contents or nothing. Uncached buffers always have
|
||||
* a cache index of XFS_BUF_DADDR_NULL so we can easily determine if the buffer
|
||||
* is cached or uncached during fault diagnosis.
|
||||
*/
|
||||
int
|
||||
xfs_buf_read_uncached(
|
||||
@ -875,7 +877,7 @@ xfs_buf_read_uncached(
|
||||
|
||||
/* set up the buffer for a read IO */
|
||||
ASSERT(bp->b_map_count == 1);
|
||||
bp->b_bn = XFS_BUF_DADDR_NULL; /* always null for uncached buffers */
|
||||
bp->b_rhash_key = XFS_BUF_DADDR_NULL;
|
||||
bp->b_maps[0].bm_bn = daddr;
|
||||
bp->b_flags |= XBF_READ;
|
||||
bp->b_ops = ops;
|
||||
@ -1513,7 +1515,7 @@ _xfs_buf_ioapply(
|
||||
SHUTDOWN_CORRUPT_INCORE);
|
||||
return;
|
||||
}
|
||||
} else if (bp->b_bn != XFS_BUF_DADDR_NULL) {
|
||||
} else if (bp->b_rhash_key != XFS_BUF_DADDR_NULL) {
|
||||
struct xfs_mount *mp = bp->b_mount;
|
||||
|
||||
/*
|
||||
@ -1523,7 +1525,8 @@ _xfs_buf_ioapply(
|
||||
if (xfs_has_crc(mp)) {
|
||||
xfs_warn(mp,
|
||||
"%s: no buf ops on daddr 0x%llx len %d",
|
||||
__func__, bp->b_bn, bp->b_length);
|
||||
__func__, xfs_buf_daddr(bp),
|
||||
bp->b_length);
|
||||
xfs_hex_dump(bp->b_addr,
|
||||
XFS_CORRUPTION_DUMP_LEN);
|
||||
dump_stack();
|
||||
@ -1793,7 +1796,7 @@ xfs_buftarg_drain(
|
||||
xfs_buf_alert_ratelimited(bp,
|
||||
"XFS: Corruption Alert",
|
||||
"Corruption Alert: Buffer at daddr 0x%llx had permanent write failures!",
|
||||
(long long)bp->b_bn);
|
||||
(long long)xfs_buf_daddr(bp));
|
||||
}
|
||||
xfs_buf_rele(bp);
|
||||
}
|
||||
|
@ -134,11 +134,7 @@ struct xfs_buf {
|
||||
*/
|
||||
struct rhash_head b_rhash_head; /* pag buffer hash node */
|
||||
|
||||
/*
|
||||
* b_bn is the cache index. Do not use directly, use b_maps[0].bm_bn
|
||||
* for the buffer disk address instead.
|
||||
*/
|
||||
xfs_daddr_t b_bn;
|
||||
xfs_daddr_t b_rhash_key; /* buffer cache index */
|
||||
int b_length; /* size of buffer in BBs */
|
||||
atomic_t b_hold; /* reference count */
|
||||
atomic_t b_lru_ref; /* lru reclaim ref count */
|
||||
@ -301,18 +297,6 @@ extern int xfs_buf_delwri_pushbuf(struct xfs_buf *, struct list_head *);
|
||||
extern int xfs_buf_init(void);
|
||||
extern void xfs_buf_terminate(void);
|
||||
|
||||
/*
|
||||
* These macros use the IO block map rather than b_bn. b_bn is now really
|
||||
* just for the buffer cache index for cached buffers. As IO does not use b_bn
|
||||
* anymore, uncached buffers do not use b_bn at all and hence must modify the IO
|
||||
* map directly. Uncached buffers are not allowed to be discontiguous, so this
|
||||
* is safe to do.
|
||||
*
|
||||
* In future, uncached buffers will pass the block number directly to the io
|
||||
* request function and hence these macros will go away at that point.
|
||||
*/
|
||||
#define XFS_BUF_SET_ADDR(bp, bno) ((bp)->b_maps[0].bm_bn = (xfs_daddr_t)(bno))
|
||||
|
||||
static inline xfs_daddr_t xfs_buf_daddr(struct xfs_buf *bp)
|
||||
{
|
||||
return bp->b_maps[0].bm_bn;
|
||||
|
Loading…
Reference in New Issue
Block a user