diff options
author | Ming Lei <ming.lei@redhat.com> | 2023-11-28 13:30:26 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2023-11-28 20:11:08 +0100 |
commit | fad907cffd4bde7384812cf32fcf69becab805cc (patch) | |
tree | b21add28c86b3dcb1f1377e2be89685e8646397a /include | |
parent | bcache: revert replacing IS_ERR_OR_NULL with IS_ERR (diff) | |
download | linux-fad907cffd4bde7384812cf32fcf69becab805cc.tar.xz linux-fad907cffd4bde7384812cf32fcf69becab805cc.zip |
block: move .bd_inode into 1st cacheline of block_device
The .bd_inode field of block_device is used in IO fast path of
blkdev_write_iter() and blkdev_llseek(), so it is more efficient to keep
it into the 1st cacheline.
.bd_openers is only touched in open()/close(), and .bd_size_lock is only
for updating bdev capacity, which is in slow path too.
So swap .bd_inode layout with .bd_openers & .bd_size_lock to move
.bd_inode into the 1st cache line.
Cc: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20231128123027.971610-2-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/blk_types.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index d5c5e59ddbd2..f7d40692dd94 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -49,9 +49,10 @@ struct block_device { bool bd_write_holder; bool bd_has_submit_bio; dev_t bd_dev; + struct inode *bd_inode; /* will die */ + atomic_t bd_openers; spinlock_t bd_size_lock; /* for bd_inode->i_size updates */ - struct inode * bd_inode; /* will die */ void * bd_claiming; void * bd_holder; const struct blk_holder_ops *bd_holder_ops; |