From: Keith Busch <keith.busch@wdc.com> To: linux-nvme@lists.infradead.org, linux-block@vger.kernel.org Cc: "Damien Le Moal" <damien.lemoal@wdc.com>, "Matias Bjørling" <matias.bjorling@wdc.com>, "Christoph Hellwig" <hch@lst.de>, "Sagi Grimberg" <sagi@grimberg.me>, "Jens Axboe" <axboe@kernel.dk> Subject: [PATCH 1/5] block: add capacity field to zone descriptors Date: Tue, 16 Jun 2020 08:34:20 +0900 [thread overview] Message-ID: <20200615233424.13458-2-keith.busch@wdc.com> (raw) In-Reply-To: <20200615233424.13458-1-keith.busch@wdc.com> From: Matias Bjørling <matias.bjorling@wdc.com> In the zoned storage model, the sectors within a zone are typically all writeable. With the introduction of the Zoned Namespace (ZNS) Command Set in the NVM Express organization, the model was extended to have a specific writeable capacity. Extend the zone descriptor data structure with a zone capacity field to indicate to the user how many sectors in a zone are writeable. Introduce backward compatibility in the zone report ioctl by extending the zone report header data structure with a flags field to indicate if the capacity field is available. Signed-off-by: Matias Bjørling <matias.bjorling@wdc.com> --- block/blk-zoned.c | 1 + drivers/block/null_blk_zoned.c | 2 ++ drivers/scsi/sd_zbc.c | 1 + include/uapi/linux/blkzoned.h | 15 +++++++++++++-- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/block/blk-zoned.c b/block/blk-zoned.c index 23831fa8701d..81152a260354 100644 --- a/block/blk-zoned.c +++ b/block/blk-zoned.c @@ -312,6 +312,7 @@ int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, return ret; rep.nr_zones = ret; + rep.flags = BLK_ZONE_REP_CAPACITY; if (copy_to_user(argp, &rep, sizeof(struct blk_zone_report))) return -EFAULT; return 0; diff --git a/drivers/block/null_blk_zoned.c b/drivers/block/null_blk_zoned.c index cc47606d8ffe..624aac09b005 100644 --- a/drivers/block/null_blk_zoned.c +++ b/drivers/block/null_blk_zoned.c @@ -47,6 +47,7 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) zone->start = sector; zone->len = dev->zone_size_sects; + zone->capacity = zone->len; zone->wp = zone->start + zone->len; zone->type = BLK_ZONE_TYPE_CONVENTIONAL; zone->cond = BLK_ZONE_COND_NOT_WP; @@ -59,6 +60,7 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) zone->start = zone->wp = sector; zone->len = dev->zone_size_sects; + zone->capacity = zone->len; zone->type = BLK_ZONE_TYPE_SEQWRITE_REQ; zone->cond = BLK_ZONE_COND_EMPTY; diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c index 6f7eba66687e..183a20720da9 100644 --- a/drivers/scsi/sd_zbc.c +++ b/drivers/scsi/sd_zbc.c @@ -59,6 +59,7 @@ static int sd_zbc_parse_report(struct scsi_disk *sdkp, u8 *buf, zone.non_seq = 1; zone.len = logical_to_sectors(sdp, get_unaligned_be64(&buf[8])); + zone.capacity = zone.len; zone.start = logical_to_sectors(sdp, get_unaligned_be64(&buf[16])); zone.wp = logical_to_sectors(sdp, get_unaligned_be64(&buf[24])); if (zone.type != ZBC_ZONE_TYPE_CONV && diff --git a/include/uapi/linux/blkzoned.h b/include/uapi/linux/blkzoned.h index 0cdef67135f0..42c3366cc25f 100644 --- a/include/uapi/linux/blkzoned.h +++ b/include/uapi/linux/blkzoned.h @@ -73,6 +73,15 @@ enum blk_zone_cond { BLK_ZONE_COND_OFFLINE = 0xF, }; +/** + * enum blk_zone_report_flags - Feature flags of reported zone descriptors. + * + * @BLK_ZONE_REP_CAPACITY: Zone descriptor has capacity field. + */ +enum blk_zone_report_flags { + BLK_ZONE_REP_CAPACITY = (1 << 0), +}; + /** * struct blk_zone - Zone descriptor for BLKREPORTZONE ioctl. * @@ -99,7 +108,9 @@ struct blk_zone { __u8 cond; /* Zone condition */ __u8 non_seq; /* Non-sequential write resources active */ __u8 reset; /* Reset write pointer recommended */ - __u8 reserved[36]; + __u8 resv[4]; + __u64 capacity; /* Zone capacity in number of sectors */ + __u8 reserved[24]; }; /** @@ -115,7 +126,7 @@ struct blk_zone { struct blk_zone_report { __u64 sector; __u32 nr_zones; - __u8 reserved[4]; + __u32 flags; struct blk_zone zones[0]; }; -- 2.24.1
WARNING: multiple messages have this Message-ID (diff)
From: Keith Busch <keith.busch@wdc.com> To: linux-nvme@lists.infradead.org, linux-block@vger.kernel.org Cc: "Jens Axboe" <axboe@kernel.dk>, "Damien Le Moal" <damien.lemoal@wdc.com>, "Christoph Hellwig" <hch@lst.de>, "Matias Bjørling" <matias.bjorling@wdc.com>, "Sagi Grimberg" <sagi@grimberg.me> Subject: [PATCH 1/5] block: add capacity field to zone descriptors Date: Tue, 16 Jun 2020 08:34:20 +0900 [thread overview] Message-ID: <20200615233424.13458-2-keith.busch@wdc.com> (raw) In-Reply-To: <20200615233424.13458-1-keith.busch@wdc.com> From: Matias Bjørling <matias.bjorling@wdc.com> In the zoned storage model, the sectors within a zone are typically all writeable. With the introduction of the Zoned Namespace (ZNS) Command Set in the NVM Express organization, the model was extended to have a specific writeable capacity. Extend the zone descriptor data structure with a zone capacity field to indicate to the user how many sectors in a zone are writeable. Introduce backward compatibility in the zone report ioctl by extending the zone report header data structure with a flags field to indicate if the capacity field is available. Signed-off-by: Matias Bjørling <matias.bjorling@wdc.com> --- block/blk-zoned.c | 1 + drivers/block/null_blk_zoned.c | 2 ++ drivers/scsi/sd_zbc.c | 1 + include/uapi/linux/blkzoned.h | 15 +++++++++++++-- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/block/blk-zoned.c b/block/blk-zoned.c index 23831fa8701d..81152a260354 100644 --- a/block/blk-zoned.c +++ b/block/blk-zoned.c @@ -312,6 +312,7 @@ int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, return ret; rep.nr_zones = ret; + rep.flags = BLK_ZONE_REP_CAPACITY; if (copy_to_user(argp, &rep, sizeof(struct blk_zone_report))) return -EFAULT; return 0; diff --git a/drivers/block/null_blk_zoned.c b/drivers/block/null_blk_zoned.c index cc47606d8ffe..624aac09b005 100644 --- a/drivers/block/null_blk_zoned.c +++ b/drivers/block/null_blk_zoned.c @@ -47,6 +47,7 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) zone->start = sector; zone->len = dev->zone_size_sects; + zone->capacity = zone->len; zone->wp = zone->start + zone->len; zone->type = BLK_ZONE_TYPE_CONVENTIONAL; zone->cond = BLK_ZONE_COND_NOT_WP; @@ -59,6 +60,7 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) zone->start = zone->wp = sector; zone->len = dev->zone_size_sects; + zone->capacity = zone->len; zone->type = BLK_ZONE_TYPE_SEQWRITE_REQ; zone->cond = BLK_ZONE_COND_EMPTY; diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c index 6f7eba66687e..183a20720da9 100644 --- a/drivers/scsi/sd_zbc.c +++ b/drivers/scsi/sd_zbc.c @@ -59,6 +59,7 @@ static int sd_zbc_parse_report(struct scsi_disk *sdkp, u8 *buf, zone.non_seq = 1; zone.len = logical_to_sectors(sdp, get_unaligned_be64(&buf[8])); + zone.capacity = zone.len; zone.start = logical_to_sectors(sdp, get_unaligned_be64(&buf[16])); zone.wp = logical_to_sectors(sdp, get_unaligned_be64(&buf[24])); if (zone.type != ZBC_ZONE_TYPE_CONV && diff --git a/include/uapi/linux/blkzoned.h b/include/uapi/linux/blkzoned.h index 0cdef67135f0..42c3366cc25f 100644 --- a/include/uapi/linux/blkzoned.h +++ b/include/uapi/linux/blkzoned.h @@ -73,6 +73,15 @@ enum blk_zone_cond { BLK_ZONE_COND_OFFLINE = 0xF, }; +/** + * enum blk_zone_report_flags - Feature flags of reported zone descriptors. + * + * @BLK_ZONE_REP_CAPACITY: Zone descriptor has capacity field. + */ +enum blk_zone_report_flags { + BLK_ZONE_REP_CAPACITY = (1 << 0), +}; + /** * struct blk_zone - Zone descriptor for BLKREPORTZONE ioctl. * @@ -99,7 +108,9 @@ struct blk_zone { __u8 cond; /* Zone condition */ __u8 non_seq; /* Non-sequential write resources active */ __u8 reset; /* Reset write pointer recommended */ - __u8 reserved[36]; + __u8 resv[4]; + __u64 capacity; /* Zone capacity in number of sectors */ + __u8 reserved[24]; }; /** @@ -115,7 +126,7 @@ struct blk_zone { struct blk_zone_report { __u64 sector; __u32 nr_zones; - __u8 reserved[4]; + __u32 flags; struct blk_zone zones[0]; }; -- 2.24.1 _______________________________________________ linux-nvme mailing list linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2020-06-15 23:35 UTC|newest] Thread overview: 192+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-15 23:34 [PATCH 0/5] nvme support for zoned namespace command set Keith Busch 2020-06-15 23:34 ` Keith Busch 2020-06-15 23:34 ` Keith Busch [this message] 2020-06-15 23:34 ` [PATCH 1/5] block: add capacity field to zone descriptors Keith Busch 2020-06-15 23:49 ` Chaitanya Kulkarni 2020-06-15 23:49 ` Chaitanya Kulkarni 2020-06-16 10:28 ` Javier González 2020-06-16 10:28 ` Javier González 2020-06-16 13:47 ` Daniel Wagner 2020-06-16 13:47 ` Daniel Wagner 2020-06-16 13:54 ` Johannes Thumshirn 2020-06-16 13:54 ` Johannes Thumshirn 2020-06-16 15:41 ` Martin K. Petersen 2020-06-16 15:41 ` Martin K. Petersen 2020-06-15 23:34 ` [PATCH 2/5] null_blk: introduce zone capacity for zoned device Keith Busch 2020-06-15 23:34 ` Keith Busch 2020-06-15 23:46 ` Chaitanya Kulkarni 2020-06-15 23:46 ` Chaitanya Kulkarni 2020-06-16 14:18 ` Daniel Wagner 2020-06-16 14:18 ` Daniel Wagner 2020-06-16 15:48 ` Martin K. Petersen 2020-06-16 15:48 ` Martin K. Petersen 2020-06-15 23:34 ` [PATCH 3/5] nvme: implement I/O Command Sets Command Set support Keith Busch 2020-06-15 23:34 ` Keith Busch 2020-06-16 10:33 ` Javier González 2020-06-16 10:33 ` Javier González 2020-06-16 17:14 ` Niklas Cassel 2020-06-16 17:14 ` Niklas Cassel 2020-06-16 15:58 ` Martin K. Petersen 2020-06-16 15:58 ` Martin K. Petersen 2020-06-16 17:01 ` Keith Busch 2020-06-16 17:01 ` Keith Busch 2020-06-17 9:50 ` Niklas Cassel 2020-06-17 9:50 ` Niklas Cassel 2020-06-16 17:06 ` Niklas Cassel 2020-06-16 17:06 ` Niklas Cassel 2020-06-17 2:01 ` Martin K. Petersen 2020-06-17 2:01 ` Martin K. Petersen 2020-06-15 23:34 ` [PATCH 4/5] nvme: support for multi-command set effects Keith Busch 2020-06-15 23:34 ` Keith Busch 2020-06-16 10:34 ` Javier González 2020-06-16 10:34 ` Javier González 2020-06-16 16:03 ` Martin K. Petersen 2020-06-16 16:03 ` Martin K. Petersen 2020-06-15 23:34 ` [PATCH 5/5] nvme: support for zoned namespaces Keith Busch 2020-06-15 23:34 ` Keith Busch 2020-06-16 10:41 ` Javier González 2020-06-16 10:41 ` Javier González 2020-06-16 11:18 ` Matias Bjørling 2020-06-16 11:18 ` Matias Bjørling 2020-06-16 12:00 ` Javier González 2020-06-16 12:00 ` Javier González 2020-06-16 12:06 ` Matias Bjørling 2020-06-16 12:06 ` Matias Bjørling 2020-06-16 12:24 ` Javier González 2020-06-16 12:24 ` Javier González 2020-06-16 12:27 ` Matias Bjørling 2020-06-16 12:27 ` Matias Bjørling 2020-06-16 12:35 ` Damien Le Moal 2020-06-16 12:35 ` Damien Le Moal [not found] ` <CGME20200616130815uscas1p1be34e5fceaa548eac31fb30790a689d4@uscas1p1.samsung.com> 2020-06-16 13:08 ` Judy Brock 2020-06-16 13:08 ` Judy Brock 2020-06-16 13:32 ` Matias Bjørling 2020-06-16 13:32 ` Matias Bjørling 2020-06-16 13:34 ` Damien Le Moal 2020-06-16 13:34 ` Damien Le Moal 2020-06-16 14:16 ` Javier González 2020-06-16 14:16 ` Javier González 2020-06-16 14:42 ` Damien Le Moal 2020-06-16 14:42 ` Damien Le Moal 2020-06-16 15:02 ` Javier González 2020-06-16 15:02 ` Javier González 2020-06-16 15:20 ` Matias Bjørling 2020-06-16 15:20 ` Matias Bjørling 2020-06-16 16:03 ` Javier González 2020-06-16 16:03 ` Javier González 2020-06-16 16:07 ` Matias Bjorling 2020-06-16 16:07 ` Matias Bjorling 2020-06-16 16:21 ` Javier González 2020-06-16 16:21 ` Javier González 2020-06-16 16:25 ` Matias Bjørling 2020-06-16 16:25 ` Matias Bjørling 2020-06-16 15:48 ` Keith Busch 2020-06-16 15:48 ` Keith Busch 2020-06-16 15:55 ` Javier González 2020-06-16 15:55 ` Javier González 2020-06-16 16:04 ` Matias Bjorling 2020-06-16 16:04 ` Matias Bjorling 2020-06-16 16:07 ` Keith Busch 2020-06-16 16:07 ` Keith Busch 2020-06-16 16:13 ` Javier González 2020-06-16 16:13 ` Javier González 2020-06-17 0:38 ` Damien Le Moal 2020-06-17 0:38 ` Damien Le Moal 2020-06-17 6:18 ` Javier González 2020-06-17 6:18 ` Javier González 2020-06-17 6:54 ` Damien Le Moal 2020-06-17 6:54 ` Damien Le Moal 2020-06-17 7:11 ` Javier González 2020-06-17 7:11 ` Javier González 2020-06-17 7:29 ` Damien Le Moal 2020-06-17 7:29 ` Damien Le Moal 2020-06-17 7:34 ` Javier González 2020-06-17 7:34 ` Javier González 2020-06-17 0:14 ` Damien Le Moal 2020-06-17 0:14 ` Damien Le Moal 2020-06-17 6:09 ` Javier González 2020-06-17 6:09 ` Javier González 2020-06-17 6:47 ` Damien Le Moal 2020-06-17 6:47 ` Damien Le Moal 2020-06-17 7:02 ` Javier González 2020-06-17 7:02 ` Javier González 2020-06-17 7:24 ` Damien Le Moal 2020-06-17 7:24 ` Damien Le Moal 2020-06-17 7:29 ` Javier González 2020-06-17 7:29 ` Javier González [not found] ` <CGME20200616123503uscas1p22ce22054a1b4152a20437b5abdd55119@uscas1p2.samsung.com> 2020-06-16 12:35 ` Judy Brock 2020-06-16 12:35 ` Judy Brock 2020-06-16 12:37 ` Damien Le Moal 2020-06-16 12:37 ` Damien Le Moal 2020-06-16 12:37 ` Matias Bjørling 2020-06-16 12:37 ` Matias Bjørling 2020-06-16 13:12 ` Judy Brock 2020-06-16 13:12 ` Judy Brock 2020-06-16 13:18 ` Judy Brock 2020-06-16 13:18 ` Judy Brock 2020-06-16 13:32 ` Judy Brock 2020-06-16 13:32 ` Judy Brock 2020-06-16 13:39 ` Damien Le Moal 2020-06-16 13:39 ` Damien Le Moal 2020-06-17 7:43 ` Christoph Hellwig 2020-06-17 7:43 ` Christoph Hellwig 2020-06-17 12:01 ` Martin K. Petersen 2020-06-17 12:01 ` Martin K. Petersen 2020-06-17 15:00 ` Javier González 2020-06-17 15:00 ` Javier González 2020-06-17 14:42 ` Javier González 2020-06-17 14:42 ` Javier González 2020-06-17 17:57 ` Matias Bjørling 2020-06-17 17:57 ` Matias Bjørling 2020-06-17 18:28 ` Javier González 2020-06-17 18:28 ` Javier González 2020-06-17 18:55 ` Matias Bjorling 2020-06-17 18:55 ` Matias Bjorling 2020-06-17 19:09 ` Javier González 2020-06-17 19:09 ` Javier González 2020-06-17 19:23 ` Matias Bjørling 2020-06-17 19:23 ` Matias Bjørling 2020-06-17 19:40 ` Javier González 2020-06-17 19:40 ` Javier González 2020-06-17 23:44 ` Heiner Litz 2020-06-17 23:44 ` Heiner Litz 2020-06-18 1:55 ` Keith Busch 2020-06-18 1:55 ` Keith Busch 2020-06-18 4:24 ` Heiner Litz 2020-06-18 4:24 ` Heiner Litz 2020-06-18 5:15 ` Damien Le Moal 2020-06-18 5:15 ` Damien Le Moal 2020-06-18 20:47 ` Heiner Litz 2020-06-18 20:47 ` Heiner Litz 2020-06-18 21:04 ` Matias Bjorling 2020-06-18 21:04 ` Matias Bjorling 2020-06-18 21:19 ` Keith Busch 2020-06-18 21:19 ` Keith Busch 2020-06-18 22:05 ` Heiner Litz 2020-06-18 22:05 ` Heiner Litz 2020-06-19 0:57 ` Damien Le Moal 2020-06-19 0:57 ` Damien Le Moal 2020-06-19 10:29 ` Matias Bjorling 2020-06-19 10:29 ` Matias Bjorling 2020-06-19 18:08 ` Heiner Litz 2020-06-19 18:08 ` Heiner Litz 2020-06-19 18:10 ` Keith Busch 2020-06-19 18:10 ` Keith Busch 2020-06-19 18:17 ` Heiner Litz 2020-06-19 18:17 ` Heiner Litz 2020-06-19 18:22 ` Keith Busch 2020-06-19 18:22 ` Keith Busch 2020-06-19 18:25 ` Matias Bjørling 2020-06-19 18:25 ` Matias Bjørling 2020-06-19 18:40 ` Heiner Litz 2020-06-19 18:40 ` Heiner Litz 2020-06-19 18:18 ` Matias Bjørling 2020-06-19 18:18 ` Matias Bjørling 2020-06-20 6:33 ` Christoph Hellwig 2020-06-20 6:33 ` Christoph Hellwig 2020-06-20 17:52 ` Heiner Litz 2020-06-20 17:52 ` Heiner Litz 2020-06-22 14:01 ` Christoph Hellwig 2022-03-02 21:11 ` Luis Chamberlain 2020-06-17 2:08 ` Martin K. Petersen 2020-06-17 2:08 ` Martin K. Petersen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200615233424.13458-2-keith.busch@wdc.com \ --to=keith.busch@wdc.com \ --cc=axboe@kernel.dk \ --cc=damien.lemoal@wdc.com \ --cc=hch@lst.de \ --cc=linux-block@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=matias.bjorling@wdc.com \ --cc=sagi@grimberg.me \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.