]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ublk: cache-align struct ublk_io
authorCaleb Sander Mateos <csander@purestorage.com>
Fri, 20 Jun 2025 15:10:08 +0000 (09:10 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 1 Jul 2025 02:13:42 +0000 (20:13 -0600)
struct ublk_io is already 56 bytes on 64-bit architectures, so round it
up to a full cache line (typically 64 bytes). This ensures a single
ublk_io doesn't span multiple cache lines and prevents false sharing if
consecutive ublk_io's are accessed by different daemon tasks.

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250620151008.3976463-15-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c

index eec3abb78ce5ca632ee00db2c77bdc22e23e88f7..e52c2d1cb8383f8fe171553880c66483984da522 100644 (file)
@@ -188,7 +188,7 @@ struct ublk_io {
        /* auto-registered buffer, valid if UBLK_IO_FLAG_AUTO_BUF_REG is set */
        u16 buf_index;
        void *buf_ctx_handle;
-};
+} ____cacheline_aligned_in_smp;
 
 struct ublk_queue {
        int q_id;