The zloop driver advertises REQ_NOWAIT support through BLK_FEAT_NOWAIT (enabled by default for all blk-mq devices), and honors the nowait behavior throughout zloop_queue_rq(). However, actual I/O to the backing file is performed in a workqueue, where blocking is allowed. To avoid imposing unnecessary non-blocking constraints in this blocking context, clear the REQ_NOWAIT flag before processing the request in the workqueue context. Signed-off-by: Chaitanya Kulkarni --- v1->v2:- Unset REQ_NOWAIT at the start of the workqueue context. (Damien) HEAD:- commit 6dbcc40ec7aa17ed3dd1f798e4201e75ab7d7447 (HEAD -> for-next, origin/for-next) Merge: 58625d626327 ba13710ddd1f Author: Jens Axboe Date: Wed Nov 5 18:24:17 2025 -0700 Merge branch 'for-6.19/block' into for-next * for-6.19/block: rust: block: update ARef and AlwaysRefCounted imports from sync::aref --- drivers/block/zloop.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/block/zloop.c b/drivers/block/zloop.c index 92be9f0af00a..1a97b21f5fed 100644 --- a/drivers/block/zloop.c +++ b/drivers/block/zloop.c @@ -498,6 +498,10 @@ static void zloop_handle_cmd(struct zloop_cmd *cmd) struct request *rq = blk_mq_rq_from_pdu(cmd); struct zloop_device *zlo = rq->q->queuedata; + /* We can block in this context, so ignore REQ_NOWAIT. */ + if (rq->cmd_flags & REQ_NOWAIT) + rq->cmd_flags &= ~REQ_NOWAIT; + switch (req_op(rq)) { case REQ_OP_READ: case REQ_OP_WRITE: -- 2.40.0