mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
Documentation: ublk: document 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-6-ushankar@purestorage.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
59eaa01ce7
commit
69f407ee8d
@ -199,24 +199,36 @@ managing and controlling ublk devices with help of several control commands:
|
|||||||
|
|
||||||
- user recovery feature description
|
- user recovery feature description
|
||||||
|
|
||||||
Two new features are added for user recovery: ``UBLK_F_USER_RECOVERY`` and
|
Three new features are added for user recovery: ``UBLK_F_USER_RECOVERY``,
|
||||||
``UBLK_F_USER_RECOVERY_REISSUE``.
|
``UBLK_F_USER_RECOVERY_REISSUE``, and ``UBLK_F_USER_RECOVERY_FAIL_IO``. To
|
||||||
|
enable recovery of ublk devices after the ublk server exits, the ublk server
|
||||||
|
should specify the ``UBLK_F_USER_RECOVERY`` flag when creating the device. The
|
||||||
|
ublk server may additionally specify at most one of
|
||||||
|
``UBLK_F_USER_RECOVERY_REISSUE`` and ``UBLK_F_USER_RECOVERY_FAIL_IO`` to
|
||||||
|
modify how I/O is handled while the ublk server is dying/dead (this is called
|
||||||
|
the ``nosrv`` case in the driver code).
|
||||||
|
|
||||||
With ``UBLK_F_USER_RECOVERY`` set, after one ubq_daemon(ublk server's io
|
With just ``UBLK_F_USER_RECOVERY`` set, after one ubq_daemon(ublk server's io
|
||||||
handler) is dying, ublk does not delete ``/dev/ublkb*`` during the whole
|
handler) is dying, ublk does not delete ``/dev/ublkb*`` during the whole
|
||||||
recovery stage and ublk device ID is kept. It is ublk server's
|
recovery stage and ublk device ID is kept. It is ublk server's
|
||||||
responsibility to recover the device context by its own knowledge.
|
responsibility to recover the device context by its own knowledge.
|
||||||
Requests which have not been issued to userspace are requeued. Requests
|
Requests which have not been issued to userspace are requeued. Requests
|
||||||
which have been issued to userspace are aborted.
|
which have been issued to userspace are aborted.
|
||||||
|
|
||||||
With ``UBLK_F_USER_RECOVERY_REISSUE`` set, after one ubq_daemon(ublk
|
With ``UBLK_F_USER_RECOVERY_REISSUE`` additionally set, after one ubq_daemon
|
||||||
server's io handler) is dying, contrary to ``UBLK_F_USER_RECOVERY``,
|
(ublk server's io handler) is dying, contrary to ``UBLK_F_USER_RECOVERY``,
|
||||||
requests which have been issued to userspace are requeued and will be
|
requests which have been issued to userspace are requeued and will be
|
||||||
re-issued to the new process after handling ``UBLK_CMD_END_USER_RECOVERY``.
|
re-issued to the new process after handling ``UBLK_CMD_END_USER_RECOVERY``.
|
||||||
``UBLK_F_USER_RECOVERY_REISSUE`` is designed for backends who tolerate
|
``UBLK_F_USER_RECOVERY_REISSUE`` is designed for backends who tolerate
|
||||||
double-write since the driver may issue the same I/O request twice. It
|
double-write since the driver may issue the same I/O request twice. It
|
||||||
might be useful to a read-only FS or a VM backend.
|
might be useful to a read-only FS or a VM backend.
|
||||||
|
|
||||||
|
With ``UBLK_F_USER_RECOVERY_FAIL_IO`` additionally set, after the ublk server
|
||||||
|
exits, requests which have issued to userspace are failed, as are any
|
||||||
|
subsequently issued requests. Applications continuously issuing I/O against
|
||||||
|
devices with this flag set will see a stream of I/O errors until a new ublk
|
||||||
|
server recovers the device.
|
||||||
|
|
||||||
Unprivileged ublk device is supported by passing ``UBLK_F_UNPRIVILEGED_DEV``.
|
Unprivileged ublk device is supported by passing ``UBLK_F_UNPRIVILEGED_DEV``.
|
||||||
Once the flag is set, all control commands can be sent by unprivileged
|
Once the flag is set, all control commands can be sent by unprivileged
|
||||||
user. Except for command of ``UBLK_CMD_ADD_DEV``, permission check on
|
user. Except for command of ``UBLK_CMD_ADD_DEV``, permission check on
|
||||||
|
Loading…
Reference in New Issue
Block a user