blk-mq: Reorder fields in 'struct blk_mq_tag_set'
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Fri, 17 Feb 2023 09:29:10 +0000 (10:29 +0100)
committerJens Axboe <axboe@kernel.dk>
Fri, 17 Feb 2023 20:37:22 +0000 (13:37 -0700)
Group some variables based on their sizes to reduce hole and avoid padding.
On x86_64, this shrinks the size of 'struct blk_mq_tag_set'
from 304 to 296 bytes.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/6f249f9b02a3490283ef0278096556de41aa0cf0.1676626130.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/blk-mq.h

index 779fba6..dd5ce11 100644 (file)
@@ -473,6 +473,7 @@ enum hctx_type {
 
 /**
  * struct blk_mq_tag_set - tag set that can be shared between request queues
+ * @ops:          Pointers to functions that implement block driver behavior.
  * @map:          One or more ctx -> hctx mappings. One map exists for each
  *                hardware queue type (enum hctx_type) that the driver wishes
  *                to support. There are no restrictions on maps being of the
@@ -480,7 +481,6 @@ enum hctx_type {
  *                types.
  * @nr_maps:      Number of elements in the @map array. A number in the range
  *                [1, HCTX_MAX_TYPES].
- * @ops:          Pointers to functions that implement block driver behavior.
  * @nr_hw_queues:  Number of hardware queues supported by the block driver that
  *                owns this data structure.
  * @queue_depth:   Number of tags per hardware queue, reserved tags included.
@@ -505,9 +505,9 @@ enum hctx_type {
  *                (BLK_MQ_F_BLOCKING).
  */
 struct blk_mq_tag_set {
+       const struct blk_mq_ops *ops;
        struct blk_mq_queue_map map[HCTX_MAX_TYPES];
        unsigned int            nr_maps;
-       const struct blk_mq_ops *ops;
        unsigned int            nr_hw_queues;
        unsigned int            queue_depth;
        unsigned int            reserved_tags;