mbox series

[v4,0/5] ublk: support device recovery without I/O queueing

Message ID 20241007182419.3263186-1-ushankar@purestorage.com (mailing list archive)
Headers show
Series ublk: support device recovery without I/O queueing | expand

Message

Uday Shankar Oct. 7, 2024, 6:24 p.m. UTC
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: 8faa82888e7109d91902260ecffd12291abb4bf6

Comments

Jens Axboe Oct. 8, 2024, 3:07 p.m. UTC | #1
On Mon, 07 Oct 2024 12:24:13 -0600, Uday Shankar wrote:
> 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:
> 
> [...]

Applied, thanks!

[1/5] ublk: check recovery flags for validity
      commit: 0a4f884510c68ac48d853a1d89ddb5c2f0a2db39
[2/5] ublk: refactor recovery configuration flag helpers
      commit: 20f2939cbcc5a1792b71130bad626b19345a23d1
[3/5] ublk: merge stop_work and quiesce_work
      commit: dbe142123bd713eeadb129f66a1357d0719ec853
[4/5] ublk: support device recovery without I/O queueing
      commit: 4aef53b1cd32f61ee2bd67c764c2bf299358e740
[5/5] Documentation: ublk: document UBLK_F_USER_RECOVERY_FAIL_IO
      commit: a463281eb2796a63000e0d528c1b712fdad452d0

Best regards,