diff options
author | Ming Lei <ming.lei@redhat.com> | 2023-01-04 16:32:35 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2023-01-04 23:24:53 +0300 |
commit | fa8e442e832a3647cdd90f3e606c473a51bc1b26 (patch) | |
tree | e1e4d1fb772779774238d8936f6ffb61b704af8c /drivers/block | |
parent | 9cea62b2cbabff8ed46f2df17778b624ad9dd25a (diff) | |
download | linux-fa8e442e832a3647cdd90f3e606c473a51bc1b26.tar.xz |
ublk: honor IO_URING_F_NONBLOCK for handling control command
Most of control command handlers may sleep, so return -EAGAIN in case
of IO_URING_F_NONBLOCK to defer the handling into io wq context.
Fixes: 71f28f3136af ("ublk_drv: add io_uring based userspace block driver")
Reported-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20230104133235.836536-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/ublk_drv.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index e9de9d846b73..17b677b5d3b2 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -1992,6 +1992,9 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd, struct ublksrv_ctrl_cmd *header = (struct ublksrv_ctrl_cmd *)cmd->cmd; int ret = -EINVAL; + if (issue_flags & IO_URING_F_NONBLOCK) + return -EAGAIN; + ublk_ctrl_cmd_dump(cmd); if (!(issue_flags & IO_URING_F_SQE128)) |