• Ming Lei's avatar
    ublk: make sure io cmd handled in submitter task context · 3421c7f6
    Ming Lei authored
    In well-done ublk server implementation, ublk io command won't be
    linked into any link chain. Meantime they are always handled in no-wait
    style, so basically io cmd is always handled in submitter task context.
    
    However, the server may set IOSQE_ASYNC, or io command is linked to one
    chain mistakenly, then we may still run into io-wq context and
    ctx->uring_lock isn't held.
    
    So in case of IO_URING_F_UNLOCKED, schedule this command by
    io_uring_cmd_complete_in_task to force running it in submitter task. Then
    ublk_ch_uring_cmd_local() is guaranteed to run with context uring_lock held,
    and we needn't to worry about sync among submission code path any more.
    Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20231009093324.957829-3-ming.lei@redhat.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    3421c7f6
ublk_drv.c 72.8 KB