ublk_drv: define macros for recovery feature and check them
Define some macros for recovery feature. UBLK_S_DEV_QUIESCED implies that ublk_device is quiesced and is ready for recovery. This state can be observed by userspace. UBLK_F_USER_RECOVERY implies that: (1) ublk_drv enables recovery feature. It won't let monitor_work to automatically abort rqs and release the device. (2) With a dying ubq_daemon, ublk_drv ends(aborts) rqs issued to userspace(ublksrv) before crash. (3) With a dying ubq_daemon, in task work and ublk_queue_rq(), ublk_drv requeues rqs. Signed-off-by: ZiyangZhang <ZiyangZhang@linux.alibaba.com> Reviewed-by: Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20220923153919.44078-3-ZiyangZhang@linux.alibaba.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
ae3f719300
commit
77a440e2cb
|
@ -49,7 +49,8 @@
|
|||
/* All UBLK_F_* have to be included into UBLK_F_ALL */
|
||||
#define UBLK_F_ALL (UBLK_F_SUPPORT_ZERO_COPY \
|
||||
| UBLK_F_URING_CMD_COMP_IN_TASK \
|
||||
| UBLK_F_NEED_GET_DATA)
|
||||
| UBLK_F_NEED_GET_DATA \
|
||||
| UBLK_F_USER_RECOVERY)
|
||||
|
||||
/* All UBLK_PARAM_TYPE_* should be included here */
|
||||
#define UBLK_PARAM_TYPE_ALL (UBLK_PARAM_TYPE_BASIC | UBLK_PARAM_TYPE_DISCARD)
|
||||
|
@ -323,6 +324,21 @@ static inline int ublk_queue_cmd_buf_size(struct ublk_device *ub, int q_id)
|
|||
PAGE_SIZE);
|
||||
}
|
||||
|
||||
static inline bool ublk_queue_can_use_recovery(
|
||||
struct ublk_queue *ubq)
|
||||
{
|
||||
if (ubq->flags & UBLK_F_USER_RECOVERY)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool ublk_can_use_recovery(struct ublk_device *ub)
|
||||
{
|
||||
if (ub->dev_info.flags & UBLK_F_USER_RECOVERY)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static void ublk_free_disk(struct gendisk *disk)
|
||||
{
|
||||
struct ublk_device *ub = disk->private_data;
|
||||
|
|
|
@ -74,9 +74,12 @@
|
|||
*/
|
||||
#define UBLK_F_NEED_GET_DATA (1UL << 2)
|
||||
|
||||
#define UBLK_F_USER_RECOVERY (1UL << 3)
|
||||
|
||||
/* device state */
|
||||
#define UBLK_S_DEV_DEAD 0
|
||||
#define UBLK_S_DEV_LIVE 1
|
||||
#define UBLK_S_DEV_QUIESCED 2
|
||||
|
||||
/* shipped via sqe->cmd of io_uring command */
|
||||
struct ublksrv_ctrl_cmd {
|
||||
|
|
Loading…
Reference in New Issue