dm bufio: move dm_bufio_client members to avoid spanning cachelines
authorMike Snitzer <snitzer@kernel.org>
Tue, 21 Mar 2023 16:06:38 +0000 (12:06 -0400)
committerMike Snitzer <snitzer@kernel.org>
Thu, 30 Mar 2023 19:57:50 +0000 (15:57 -0400)
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>
drivers/md/dm-bufio.c

index 9ac5002..e545974 100644 (file)
@@ -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);