util-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] blkzone: add report capacity command
@ 2020-09-11  8:47 Hans Holmberg
  2020-09-11 10:42 ` Karel Zak
  0 siblings, 1 reply; 2+ messages in thread
From: Hans Holmberg @ 2020-09-11  8:47 UTC (permalink / raw)
  To: Karel Zak
  Cc: Damien Le Moal, Shinichiro Kawasaki, Matias Bjorling, util-linux,
	Hans Holmberg

Add a command that answers the the question:
"How much data can I store on this device/in this range of zones?"

Implement this by summing up zone capacities over the given range.

Signed-off-by: Hans Holmberg <hans.holmberg@wdc.com>
---

As commands like blockdev --getsize and lsblk returns the size
of the entire address space, it is useful to provide users with a command
that calculates the actual storage capacity in that address space
for zoned block devices.

 sys-utils/blkzone.8 |  7 +++++++
 sys-utils/blkzone.c | 28 ++++++++++++++++++++--------
 2 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/sys-utils/blkzone.8 b/sys-utils/blkzone.8
index 043bc96e23ac..958677e1bffa 100644
--- a/sys-utils/blkzone.8
+++ b/sys-utils/blkzone.8
@@ -52,6 +52,13 @@ ro:Read only
 x?:Reserved conditions (should not be reported)
 .TE
 
+.SS capacity
+The command \fBblkzone capacity\fP is used to report device capacity information.
+.PP
+By default, the command will report the sum, in number of sectors, of all
+zone capacities on the device. Options may be used to modify this behavior,
+changing the starting zone or the size of the report, as explained below.
+
 .SS reset
 The command \fBblkzone reset\fP is used to reset one or more zones. Unlike
 .BR sg_reset_wp (8),
diff --git a/sys-utils/blkzone.c b/sys-utils/blkzone.c
index 67eaf1a02430..c416e0711fc3 100644
--- a/sys-utils/blkzone.c
+++ b/sys-utils/blkzone.c
@@ -91,6 +91,10 @@ static const struct blkzone_command commands[] = {
 		.name = "report",
 		.handler = blkzone_report,
 		.help = N_("Report zone information about the given device")
+	},{
+		.name = "capacity",
+		.handler = blkzone_report,
+		.help = N_("Report sum of zone capacities for the given device")
 	},{
 		.name = "reset",
 		.handler = blkzone_action,
@@ -224,6 +228,8 @@ static const char *condition_str[] = {
 
 static int blkzone_report(struct blkzone_control *ctl)
 {
+	bool only_capacity_sum = !strcmp(ctl->command->name, "capacity");
+	uint64_t capacity_sum = 0;
 	struct blk_zone_report *zi;
 	unsigned long zonesize;
 	uint32_t i, nr_zones;
@@ -290,21 +296,27 @@ static int blkzone_report(struct blkzone_control *ctl)
 			else
 				cap = entry->len;
 
-			printf(_("  start: 0x%09"PRIx64", len 0x%06"PRIx64
-				", cap 0x%06"PRIx64", wptr 0x%06"PRIx64
-				" reset:%u non-seq:%u, zcond:%2u(%s) [type: %u(%s)]\n"),
-				start, len, cap, (type == 0x1) ? 0 : wp - start,
-				entry->reset, entry->non_seq,
-				cond, condition_str[cond & (ARRAY_SIZE(condition_str) - 1)],
-				type, type_text[type]);
+			if (only_capacity_sum) {
+				capacity_sum += cap;
+			} else {
+				printf(_("  start: 0x%09"PRIx64", len 0x%06"PRIx64
+					", cap 0x%06"PRIx64", wptr 0x%06"PRIx64
+					" reset:%u non-seq:%u, zcond:%2u(%s) [type: %u(%s)]\n"),
+					start, len, cap, (type == 0x1) ? 0 : wp - start,
+					entry->reset, entry->non_seq,
+					cond, condition_str[cond & (ARRAY_SIZE(condition_str) - 1)],
+					type, type_text[type]);
+			}
 
 			nr_zones--;
 			ctl->offset = start + len;
-
 		}
 
 	}
 
+	if (only_capacity_sum)
+		printf(_("0x%09"PRIx64"\n"), capacity_sum);
+
 	free(zi);
 	close(fd);
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] blkzone: add report capacity command
  2020-09-11  8:47 [PATCH] blkzone: add report capacity command Hans Holmberg
@ 2020-09-11 10:42 ` Karel Zak
  0 siblings, 0 replies; 2+ messages in thread
From: Karel Zak @ 2020-09-11 10:42 UTC (permalink / raw)
  To: Hans Holmberg
  Cc: Damien Le Moal, Shinichiro Kawasaki, Matias Bjorling, util-linux

On Fri, Sep 11, 2020 at 10:47:23AM +0200, Hans Holmberg wrote:
>  sys-utils/blkzone.8 |  7 +++++++
>  sys-utils/blkzone.c | 28 ++++++++++++++++++++--------
>  2 files changed, 27 insertions(+), 8 deletions(-)

Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-09-11 10:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-11  8:47 [PATCH] blkzone: add report capacity command Hans Holmberg
2020-09-11 10:42 ` Karel Zak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).