]> www.infradead.org Git - users/hch/misc.git/commit
ublk: support device recovery without I/O queueing
authorUday Shankar <ushankar@purestorage.com>
Mon, 7 Oct 2024 18:24:17 +0000 (12:24 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 22 Oct 2024 14:16:37 +0000 (08:16 -0600)
commit59eaa01ce7a6cbc5c36b928f52888f99fca6b295
treeafee0049b392e6f999ebda50c16a39bcc956ce93
parent27b5d4170cda9a7ad0596d540d57e063bf5da26e
ublk: support device recovery without I/O queueing

ublk currently supports the following behaviors on ublk server exit:

A: outstanding I/Os get errors, subsequently issued I/Os get errors
B: outstanding I/Os get errors, subsequently issued I/Os queue
C: outstanding I/Os get reissued, subsequently issued I/Os queue

and the following behaviors for recovery of preexisting block devices by
a future incarnation of the ublk server:

1: ublk devices stopped on ublk server exit (no recovery possible)
2: ublk devices are recoverable using start/end_recovery commands

The userspace interface allows selection of combinations of these
behaviors using flags specified at device creation time, namely:

default behavior: A + 1
UBLK_F_USER_RECOVERY: B + 2
UBLK_F_USER_RECOVERY|UBLK_F_USER_RECOVERY_REISSUE: C + 2

The behavior A + 2 is currently unsupported. Add support for this
behavior under the new flag combination
UBLK_F_USER_RECOVERY|UBLK_F_USER_RECOVERY_FAIL_IO.

Signed-off-by: Uday Shankar <ushankar@purestorage.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20241007182419.3263186-5-ushankar@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/ublk_drv.c
include/uapi/linux/ublk_cmd.h