summaryrefslogtreecommitdiff
path: root/drivers/md
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@kernel.org>2023-03-21 19:06:38 +0300
committerMike Snitzer <snitzer@kernel.org>2023-03-30 22:57:50 +0300
commit530f683ddcd211a4dc5d60a13e6f4918a541bb8d (patch)
treea572d6e86723dea7d5454bd06184549d595d1c8d /drivers/md
parent791188065be0d3715e6696412ab9c7a5f6b52bd3 (diff)
downloadlinux-530f683ddcd211a4dc5d60a13e6f4918a541bb8d.tar.xz
dm bufio: move dm_bufio_client members to avoid spanning cachelines
Movement also consolidates holes in dm_bufio_client struct. But the overall size of the struct isn't changed. Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/dm-bufio.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 9ac50024006d..e5459741335d 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -936,13 +936,16 @@ static void cache_remove_range(struct dm_buffer_cache *bc,
* context.
*/
struct dm_bufio_client {
- struct mutex lock;
- spinlock_t spinlock;
- bool no_sleep;
-
struct block_device *bdev;
unsigned int block_size;
s8 sectors_per_block_bits;
+
+ bool no_sleep;
+ struct mutex lock;
+ spinlock_t spinlock;
+
+ int async_write_error;
+
void (*alloc_callback)(struct dm_buffer *buf);
void (*write_callback)(struct dm_buffer *buf);
struct kmem_cache *slab_buffer;
@@ -954,23 +957,22 @@ struct dm_bufio_client {
unsigned int minimum_buffers;
- struct dm_buffer_cache cache;
- wait_queue_head_t free_buffer_wait;
-
sector_t start;
- int async_write_error;
-
- struct list_head client_list;
-
struct shrinker shrinker;
struct work_struct shrink_work;
atomic_long_t need_shrink;
+ wait_queue_head_t free_buffer_wait;
+
+ struct list_head client_list;
+
/*
* Used by global_cleanup to sort the clients list.
*/
unsigned long oldest_buffer;
+
+ struct dm_buffer_cache cache;
};
static DEFINE_STATIC_KEY_FALSE(no_sleep_enabled);