mirror of https://github.com/torvalds/linux.git
zloop: clear nowait flag in workqueue context
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 <ckulkarnilinux@gmail.com> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
b11e483a1c
commit
e8f0abdd49
|
|
@ -548,6 +548,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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue