On Tue, Feb 25, 2025 at 02:24:55PM -0700, Caleb Sander Mateos wrote: > In case of an error, ublk's ->uring_cmd() functions currently return > -EIOCBQUEUED and immediately call io_uring_cmd_done(). -EIOCBQUEUED and > io_uring_cmd_done() are intended for asynchronous completions. For > synchronous completions, the ->uring_cmd() function can just return the > negative return code directly. This skips io_uring_cmd_del_cancelable(), > and deferring the completion to task work. So return the error code > directly from __ublk_ch_uring_cmd() and ublk_ctrl_uring_cmd(). > > Update ublk_ch_uring_cmd_cb(), which currently ignores the return value > from __ublk_ch_uring_cmd(), to call io_uring_cmd_done() for synchronous > completions. > > Signed-off-by: Caleb Sander Mateos <csander@xxxxxxxxxxxxxxx> Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx> Thanks, Ming