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;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
bp->b_bn = map[0].bm_bn;
|
bp->b_rhash_key = map[0].bm_bn;
|
||||||
bp->b_length = 0;
|
bp->b_length = 0;
|
||||||
for (i = 0; i < nmaps; i++) {
|
for (i = 0; i < nmaps; i++) {
|
||||||
bp->b_maps[i].bm_bn = map[i].bm_bn;
|
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);
|
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;
|
return 1;
|
||||||
|
|
||||||
if (unlikely(bp->b_length != map->bm_len)) {
|
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 */
|
.min_size = 32, /* empty AGs have minimal footprint */
|
||||||
.nelem_hint = 16,
|
.nelem_hint = 16,
|
||||||
.key_len = sizeof(xfs_daddr_t),
|
.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),
|
.head_offset = offsetof(struct xfs_buf, b_rhash_head),
|
||||||
.automatic_shrinking = true,
|
.automatic_shrinking = true,
|
||||||
.obj_cmpfn = _xfs_buf_obj_cmp,
|
.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
|
* 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
|
int
|
||||||
xfs_buf_read_uncached(
|
xfs_buf_read_uncached(
|
||||||
@ -875,7 +877,7 @@ xfs_buf_read_uncached(
|
|||||||
|
|
||||||
/* set up the buffer for a read IO */
|
/* set up the buffer for a read IO */
|
||||||
ASSERT(bp->b_map_count == 1);
|
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_maps[0].bm_bn = daddr;
|
||||||
bp->b_flags |= XBF_READ;
|
bp->b_flags |= XBF_READ;
|
||||||
bp->b_ops = ops;
|
bp->b_ops = ops;
|
||||||
@ -1513,7 +1515,7 @@ _xfs_buf_ioapply(
|
|||||||
SHUTDOWN_CORRUPT_INCORE);
|
SHUTDOWN_CORRUPT_INCORE);
|
||||||
return;
|
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;
|
struct xfs_mount *mp = bp->b_mount;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1523,7 +1525,8 @@ _xfs_buf_ioapply(
|
|||||||
if (xfs_has_crc(mp)) {
|
if (xfs_has_crc(mp)) {
|
||||||
xfs_warn(mp,
|
xfs_warn(mp,
|
||||||
"%s: no buf ops on daddr 0x%llx len %d",
|
"%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_hex_dump(bp->b_addr,
|
||||||
XFS_CORRUPTION_DUMP_LEN);
|
XFS_CORRUPTION_DUMP_LEN);
|
||||||
dump_stack();
|
dump_stack();
|
||||||
@ -1793,7 +1796,7 @@ xfs_buftarg_drain(
|
|||||||
xfs_buf_alert_ratelimited(bp,
|
xfs_buf_alert_ratelimited(bp,
|
||||||
"XFS: Corruption Alert",
|
"XFS: Corruption Alert",
|
||||||
"Corruption Alert: Buffer at daddr 0x%llx had permanent write failures!",
|
"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);
|
xfs_buf_rele(bp);
|
||||||
}
|
}
|
||||||
|
@ -134,11 +134,7 @@ struct xfs_buf {
|
|||||||
*/
|
*/
|
||||||
struct rhash_head b_rhash_head; /* pag buffer hash node */
|
struct rhash_head b_rhash_head; /* pag buffer hash node */
|
||||||
|
|
||||||
/*
|
xfs_daddr_t b_rhash_key; /* buffer cache index */
|
||||||
* 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;
|
|
||||||
int b_length; /* size of buffer in BBs */
|
int b_length; /* size of buffer in BBs */
|
||||||
atomic_t b_hold; /* reference count */
|
atomic_t b_hold; /* reference count */
|
||||||
atomic_t b_lru_ref; /* lru reclaim ref 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 int xfs_buf_init(void);
|
||||||
extern void xfs_buf_terminate(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)
|
static inline xfs_daddr_t xfs_buf_daddr(struct xfs_buf *bp)
|
||||||
{
|
{
|
||||||
return bp->b_maps[0].bm_bn;
|
return bp->b_maps[0].bm_bn;
|
||||||
|
Loading…
Reference in New Issue
Block a user