|
|
Subscribe / Log in / New account

ublk: support device recovery without I/O queueing

From:  Uday Shankar <ushankar-AT-purestorage.com>
To:  Ming Lei <ming.lei-AT-redhat.com>, Jens Axboe <axboe-AT-kernel.dk>, Jonathan Corbet <corbet-AT-lwn.net>
Subject:  [PATCH v3 0/5] ublk: support device recovery without I/O queueing
Date:  Wed, 02 Oct 2024 16:09:44 -0600
Message-ID:  <20241002220949.3087902-1-ushankar@purestorage.com>
Cc:  Uday Shankar <ushankar-AT-purestorage.com>, linux-block-AT-vger.kernel.org, linux-doc-AT-vger.kernel.org
Archive-link:  Article

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




Copyright © 2024, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds