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 A + 2 is a currently unsupported behavior. This patch series aims to add support for it. Userspace support and testing for this flag are available at: https://github.com/ublk-org/ublksrv/pull/73 Uday Shankar (5): ublk: check recovery flags for validity ublk: refactor recovery configuration flag helpers ublk: merge stop_work and quiesce_work ublk: support device recovery without I/O queueing Documentation: ublk: document UBLK_F_USER_RECOVERY_FAIL_IO Documentation/block/ublk.rst | 24 +++-- drivers/block/ublk_drv.c | 191 +++++++++++++++++++++++----------- include/uapi/linux/ublk_cmd.h | 18 ++++ 3 files changed, 165 insertions(+), 68 deletions(-) base-commit: 52d980df51c607867e40e11eef125cb51f8769a5 -- 2.34.1