]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
block: Catch possible entries missing from hctx_state_name[]
authorJohn Garry <john.g.garry@oracle.com>
Fri, 19 Jul 2024 11:29:06 +0000 (11:29 +0000)
committerJens Axboe <axboe@kernel.dk>
Fri, 19 Jul 2024 15:32:49 +0000 (09:32 -0600)
Add a build-time assert that we are not missing entries from
hctx_state_name[]. For this, create a separate enum for state flags and add
a "max" entry for BLK_MQ_S_x flags.

The numbering for those enum values is as default, so don't explicitly
number.

Signed-off-by: John Garry <john.g.garry@oracle.com>
Link: https://lore.kernel.org/r/20240719112912.3830443-10-john.g.garry@oracle.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq-debugfs.c
include/linux/blk-mq.h

index d28784c1957f287003f3c83d2517ee32e3e0e493..85be8aa39b90ab93b0806d9cfd2a761d73c61e12 100644 (file)
@@ -165,6 +165,7 @@ static int hctx_state_show(void *data, struct seq_file *m)
 {
        struct blk_mq_hw_ctx *hctx = data;
 
+       BUILD_BUG_ON(ARRAY_SIZE(hctx_state_name) != BLK_MQ_S_MAX);
        blk_flags_show(m, hctx->state, hctx_state_name,
                       ARRAY_SIZE(hctx_state_name));
        seq_puts(m, "\n");
index 8a84f49468d5a4ec338b1be8e706dc90c032ca1a..4905a1d6755178f960cb8e5f8c3d8e1b33278af5 100644 (file)
@@ -663,13 +663,6 @@ enum {
        BLK_MQ_F_NO_SCHED_BY_DEFAULT    = 1 << 7,
        BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,
        BLK_MQ_F_ALLOC_POLICY_BITS = 1,
-
-       BLK_MQ_S_STOPPED        = 0,
-       BLK_MQ_S_TAG_ACTIVE     = 1,
-       BLK_MQ_S_SCHED_RESTART  = 2,
-
-       /* hw queue is inactive after all its CPUs become offline */
-       BLK_MQ_S_INACTIVE       = 3,
 };
 #define BLK_MQ_FLAG_TO_ALLOC_POLICY(flags) \
        ((flags >> BLK_MQ_F_ALLOC_POLICY_START_BIT) & \
@@ -681,6 +674,16 @@ enum {
 #define BLK_MQ_MAX_DEPTH       (10240)
 #define BLK_MQ_NO_HCTX_IDX     (-1U)
 
+enum {
+       /* Keep hctx_state_name[] in sync with the definitions below */
+       BLK_MQ_S_STOPPED,
+       BLK_MQ_S_TAG_ACTIVE,
+       BLK_MQ_S_SCHED_RESTART,
+       /* hw queue is inactive after all its CPUs become offline */
+       BLK_MQ_S_INACTIVE,
+       BLK_MQ_S_MAX
+};
+
 struct gendisk *__blk_mq_alloc_disk(struct blk_mq_tag_set *set,
                struct queue_limits *lim, void *queuedata,
                struct lock_class_key *lkclass);