]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
block: avoid polling configuration errors
authorhexue <xue01.he@samsung.com>
Thu, 18 Jul 2024 07:08:17 +0000 (15:08 +0800)
committerJens Axboe <axboe@kernel.dk>
Fri, 19 Jul 2024 15:35:35 +0000 (09:35 -0600)
This patch adds a poll queue check, aiming to help users use polled IO
accurately.

If users do polled IO but the device doesn't have poll queues, they will
get suboptimal performance data and waste CPU resources. Add a poll queue
check batching this. If users don't have the device properly configured,
or if it simply doesn't support polled IO, it will error the IO with
-EOPNOTSUPP. This is similar to what we used to do for sync polled IO,
which is no longer supported.

Signed-off-by: hexue <xue01.he@samsung.com>
Link: https://lore.kernel.org/r/20240718070817.1031494-1-xue01.he@samsung.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-core.c

index 02bceeb36f2c481b7f99e45bcf6ae55daf947dab..1217c2cd66dd88fc5cf53556835a9d9c5a619947 100644 (file)
@@ -791,8 +791,11 @@ void submit_bio_noacct(struct bio *bio)
                }
        }
 
-       if (!(q->limits.features & BLK_FEAT_POLL))
+       if (!(q->limits.features & BLK_FEAT_POLL) &&
+                       (bio->bi_opf & REQ_POLLED)) {
                bio_clear_polled(bio);
+               goto not_supported;
+       }
 
        switch (bio_op(bio)) {
        case REQ_OP_READ: