ublk: add timeout handler for-6.4/block for-6.4/block-2023-05-06
authorMing Lei <ming.lei@redhat.com>
Tue, 2 May 2023 02:42:31 +0000 (10:42 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 3 May 2023 15:39:18 +0000 (09:39 -0600)
commitc0b79b0ff53be5b05be98e3caaa6a39de1fe9520
treee07c9da9af03891b797674f7630167ad5f987c9d
parent3899d94e3831ee07ea6821c032dc297aec80586a
ublk: add timeout handler

Add timeout handler, so that we can provide forward progress guarantee for
unprivileged ublk, which can't be trusted.

One thing is that sync() calls sync_bdevs(wait) for all block devices after
running sync_bdevs(no_wait), and if one device can't move on, the sync() won't
return any more.

Add timeout for unprivileged ublk to avoid such affect for other users which call
sync() syscall.

Meantime clear UBLK_F_USER_RECOVERY_REISSUE for unprivileged ublk since
that feature may cause IO hang too.

Fixes: 4093cb5a0634 ("ublk_drv: add mechanism for supporting unprivileged ublk device")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20230502024231.888498-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c