On 2019/08/01 6:01, Chaitanya Kulkarni wrote:
> This patch introduces a new request operation REQ_OP_ZONE_RESET_ALL.
> This is useful for the applications like mkfs where it needs to reset
> all the zones present on the underlying block device. As part for this
> patch we also introduce new QUEUE_FLAG_ZONE_RESETALL which indicates the
> queue zone reset all capability and corresponding helper macro.
> 
> Signed-off-by: Chaitanya Kulkarni <[email protected]>
> ---
>  include/linux/blk_types.h | 2 ++
>  include/linux/blkdev.h    | 3 +++
>  2 files changed, 5 insertions(+)
> 
> diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
> index feff3fe4467e..3991b580d6bd 100644
> --- a/include/linux/blk_types.h
> +++ b/include/linux/blk_types.h
> @@ -282,6 +282,8 @@ enum req_opf {
>       REQ_OP_ZONE_RESET       = 6,
>       /* write the same sector many times */
>       REQ_OP_WRITE_SAME       = 7,
> +     /* reset all the zone present on the device */
> +     REQ_OP_ZONE_RESET_ALL   = 8,
>       /* write the zero filled sector many times */
>       REQ_OP_WRITE_ZEROES     = 9,
>  
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index 1ef375dafb1c..474008bffee2 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -611,6 +611,7 @@ struct request_queue {
>  #define QUEUE_FLAG_SCSI_PASSTHROUGH 23       /* queue supports SCSI commands 
> */
>  #define QUEUE_FLAG_QUIESCED  24      /* queue has been quiesced */
>  #define QUEUE_FLAG_PCI_P2PDMA        25      /* device supports PCI p2p 
> requests */
> +#define QUEUE_FLAG_ZONE_RESETALL 26  /* supports Zone Reset All */
>  
>  #define QUEUE_FLAG_MQ_DEFAULT        ((1 << QUEUE_FLAG_IO_STAT) |            
> \
>                                (1 << QUEUE_FLAG_SAME_COMP))
> @@ -630,6 +631,8 @@ bool blk_queue_flag_test_and_set(unsigned int flag, 
> struct request_queue *q);
>  #define blk_queue_io_stat(q) test_bit(QUEUE_FLAG_IO_STAT, &(q)->queue_flags)
>  #define blk_queue_add_random(q)      test_bit(QUEUE_FLAG_ADD_RANDOM, 
> &(q)->queue_flags)
>  #define blk_queue_discard(q) test_bit(QUEUE_FLAG_DISCARD, &(q)->queue_flags)
> +#define blk_queue_zone_resetall(q)   \
> +     test_bit(QUEUE_FLAG_ZONE_RESETALL, &(q)->queue_flags)
>  #define blk_queue_secure_erase(q) \
>       (test_bit(QUEUE_FLAG_SECERASE, &(q)->queue_flags))
>  #define blk_queue_dax(q)     test_bit(QUEUE_FLAG_DAX, &(q)->queue_flags)
> 

Reviewed-by: Damien Le Moal <[email protected]>

-- 
Damien Le Moal
Western Digital Research

Reply via email to