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 <chaitanya.kulkarni@xxxxxxx> > --- > 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 <damien.lemoal@xxxxxxx> -- Damien Le Moal Western Digital Research