On Thu, Jul 02, 2020 at 08:19:22PM +0200, Niklas Cassel wrote: > Add a new max_active zones definition in the sysfs documentation. > This definition will be common for all devices utilizing the zoned block > device support in the kernel. > > Export max_active_zones according to this new definition for NVMe Zoned > Namespace devices, ZAC ATA devices (which are treated as SCSI devices by > the kernel), and ZBC SCSI devices. > > Add the new max_active_zones member to struct request_queue, rather > than as a queue limit, since this property cannot be split across stacking > drivers. > > For SCSI devices, even though max active zones is not part of the ZBC/ZAC > spec, export max_active_zones as 0, signifying "no limit". > > Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxx> > Reviewed-by: Javier González <javier@xxxxxxxxxxx> > --- > Documentation/block/queue-sysfs.rst | 7 +++++++ > block/blk-sysfs.c | 14 +++++++++++++- > drivers/nvme/host/zns.c | 1 + > drivers/scsi/sd_zbc.c | 1 + > include/linux/blkdev.h | 16 ++++++++++++++++ > 5 files changed, 38 insertions(+), 1 deletion(-) > > diff --git a/Documentation/block/queue-sysfs.rst b/Documentation/block/queue-sysfs.rst > index f01cf8530ae4..f261a5c84170 100644 > --- a/Documentation/block/queue-sysfs.rst > +++ b/Documentation/block/queue-sysfs.rst > @@ -117,6 +117,13 @@ Maximum number of elements in a DMA scatter/gather list with integrity > data that will be submitted by the block layer core to the associated > block driver. > > +max_active_zones (RO) > +--------------------- > +For zoned block devices (zoned attribute indicating "host-managed" or > +"host-aware"), the sum of zones belonging to any of the zone states: > +EXPLICIT OPEN, IMPLICIT OPEN or CLOSED, is limited by this value. > +If this value is 0, there is no limit. Shouldn't this all be in Documentation/ABI/ to describe the sysfs files? All other kernel subsystems use that format, why is block special? > + > max_open_zones (RO) > ------------------- > For zoned block devices (zoned attribute indicating "host-managed" or > diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c > index fa42961e9678..624bb4d85fc7 100644 > --- a/block/blk-sysfs.c > +++ b/block/blk-sysfs.c > @@ -310,6 +310,11 @@ static ssize_t queue_max_open_zones_show(struct request_queue *q, char *page) > return queue_var_show(queue_max_open_zones(q), page); > } > > +static ssize_t queue_max_active_zones_show(struct request_queue *q, char *page) > +{ > + return queue_var_show(queue_max_active_zones(q), page); > +} > + > static ssize_t queue_nomerges_show(struct request_queue *q, char *page) > { > return queue_var_show((blk_queue_nomerges(q) << 1) | > @@ -677,6 +682,11 @@ static struct queue_sysfs_entry queue_max_open_zones_entry = { > .show = queue_max_open_zones_show, > }; > > +static struct queue_sysfs_entry queue_max_active_zones_entry = { > + .attr = {.name = "max_active_zones", .mode = 0444 }, > + .show = queue_max_active_zones_show, > +}; __ATTR_RO()? thanks, greg k-h