[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240531091015.2636025-1-xue01.he@samsung.com>
Date: Fri, 31 May 2024 17:10:15 +0800
From: hexue <xue01.he@...sung.com>
To: axboe@...nel.dk
Cc: linux-block@...r.kernel.org, linux-kernel@...r.kernel.org, hexue
<xue01.he@...sung.com>
Subject: [PATCH] block: Avoid polling configuration errors
Here's a misconfigured if application is doing polled IO
for devices that don't have a poll queue, the process will
continue to do syscall between user space and kernel space,
as in normal poll IO, CPU utilization will be 100%. IO actually
arrives through interruption.
This patch returns a signal that does not support the operation
when the underlying device does not have a poll queue, avoiding
performance and CPU simultaneous loss.
Signed-off-by: hexue <xue01.he@...sung.com>
---
block/blk-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index 01186333c88e..0afcd74ae939 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -913,7 +913,7 @@ int bio_poll(struct bio *bio, struct io_comp_batch *iob, unsigned int flags)
q = bdev_get_queue(bdev);
if (cookie == BLK_QC_T_NONE ||
!test_bit(QUEUE_FLAG_POLL, &q->queue_flags))
- return 0;
+ return -EOPNOTSUPP;
blk_flush_plug(current->plug, false);
--
2.40.1
Powered by blists - more mailing lists