[PATCH 5/6] block: add zone attr. to zone mgmt IOCTL struct
Javier González
javier at javigon.com
Fri Jun 26 02:03:32 EDT 2020
On 26.06.2020 01:45, Damien Le Moal wrote:
>On 2020/06/25 21:22, Javier González wrote:
>> From: Javier González <javier.gonz at samsung.com>
>>
>> Add zone attributes field to the blk_zone structure. Use ZNS attributes
>> as base for zoned block devices in general.
>>
>> Signed-off-by: Javier González <javier.gonz at samsung.com>
>> Signed-off-by: SelvaKumar S <selvakuma.s1 at samsung.com>
>> Signed-off-by: Kanchan Joshi <joshi.k at samsung.com>
>> Signed-off-by: Nitesh Shetty <nj.shetty at samsung.com>
>> ---
>> drivers/nvme/host/zns.c | 1 +
>> include/uapi/linux/blkzoned.h | 13 ++++++++++++-
>> 2 files changed, 13 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/nvme/host/zns.c b/drivers/nvme/host/zns.c
>> index 258d03610cc0..7d8381fe7665 100644
>> --- a/drivers/nvme/host/zns.c
>> +++ b/drivers/nvme/host/zns.c
>> @@ -195,6 +195,7 @@ static int nvme_zone_parse_entry(struct nvme_ns *ns,
>> zone.capacity = nvme_lba_to_sect(ns, le64_to_cpu(entry->zcap));
>> zone.start = nvme_lba_to_sect(ns, le64_to_cpu(entry->zslba));
>> zone.wp = nvme_lba_to_sect(ns, le64_to_cpu(entry->wp));
>> + zone.attr = entry->za;
>>
>> return cb(&zone, idx, data);
>> }
>> diff --git a/include/uapi/linux/blkzoned.h b/include/uapi/linux/blkzoned.h
>> index 0c49a4b2ce5d..2e43a00e3425 100644
>> --- a/include/uapi/linux/blkzoned.h
>> +++ b/include/uapi/linux/blkzoned.h
>> @@ -82,6 +82,16 @@ enum blk_zone_report_flags {
>> BLK_ZONE_REP_CAPACITY = (1 << 0),
>> };
>>
>> +/**
>> + * Zone Attributes
>
>This is a user interface file. Please document the meaning of each attribute.
>
Sure.
>> + */
>> +enum blk_zone_attr {
>> + BLK_ZONE_ATTR_ZFC = 1 << 0,
>> + BLK_ZONE_ATTR_FZR = 1 << 1,
>> + BLK_ZONE_ATTR_RZR = 1 << 2,
>> + BLK_ZONE_ATTR_ZDEV = 1 << 7,
>These are ZNS specific, right ? Integrating the 2 ZBC/ZAC attributes in this
>list would be nice, namely non_seq and reset. That will imply patching sd.c.
>
Of course. I will look at non_seq and reset. Any other that should go
in here?
>> +};
>> +
>> /**
>> * struct blk_zone - Zone descriptor for BLKREPORTZONE ioctl.
>> *
>> @@ -108,7 +118,8 @@ struct blk_zone {
>> __u8 cond; /* Zone condition */
>> __u8 non_seq; /* Non-sequential write resources active */
>> __u8 reset; /* Reset write pointer recommended */
>> - __u8 resv[4];
>> + __u8 attr; /* Zone attributes */
>> + __u8 resv[3];
>> __u64 capacity; /* Zone capacity in number of sectors */
>> __u8 reserved[24];
>> };
>>
>
>You are missing a BLK_ZONE_REP_ATTR report flag to indicate to the user that the
>attr field is present, used and valid.
>
>enum blk_zone_report_flags {
> BLK_ZONE_REP_CAPACITY = (1 << 0),
>+ BLK_ZONE_REP_ATTR = (1 << 1),
> };
>
>is I think needed.
Good point. I will add that on a V2.
Javier
More information about the Linux-nvme
mailing list