* [PATCH] blkzone: add capacity field to zone report
@ 2020-07-01 11:33 Shin'ichiro Kawasaki
2020-07-03 8:40 ` Karel Zak
0 siblings, 1 reply; 2+ messages in thread
From: Shin'ichiro Kawasaki @ 2020-07-01 11:33 UTC (permalink / raw)
To: Karel Zak, util-linux; +Cc: Hans Holmberg, Damien Le Moal, Shinichiro Kawasaki
NVMe ZNS specification defines zone capacity. The report zone interface
of Linux kernel supports it. Expose it in report zone by blkzone command.
Signed-off-by: Hans Holmberg <hans.holmberg@wdc.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
---
configure.ac | 4 ++++
sys-utils/blkzone.8 | 1 +
sys-utils/blkzone.c | 20 ++++++++++++++++++--
3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index e31dc3767..f3e9f5d0d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -322,6 +322,10 @@ AC_CHECK_HEADERS([security/pam_misc.h],
AC_CHECK_HEADERS([linux/blkzoned.h])
+AC_CHECK_DECLS([BLK_ZONE_REP_CAPACITY], [], [], [
+ #include <linux/blkzoned.h>
+])
+
AC_CHECK_HEADERS([security/openpam.h], [], [], [
#ifdef HAVE_SECURITY_PAM_APPL_H
#include <security/pam_appl.h>
diff --git a/sys-utils/blkzone.8 b/sys-utils/blkzone.8
index 64ad23bb3..043bc96e2 100644
--- a/sys-utils/blkzone.8
+++ b/sys-utils/blkzone.8
@@ -29,6 +29,7 @@ tab(:);
l l.
start:Zone start sector
len:Zone length in number of sectors
+cap:Zone capacity in number of sectors
wptr:Zone write pointer position
reset:Reset write pointer recommended
non-seq:Non-sequential write resources active
diff --git a/sys-utils/blkzone.c b/sys-utils/blkzone.c
index 11e90fb0e..0f62ca395 100644
--- a/sys-utils/blkzone.c
+++ b/sys-utils/blkzone.c
@@ -24,6 +24,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
+#include <stdbool.h>
#include <fcntl.h>
#include <limits.h>
#include <getopt.h>
@@ -189,6 +190,14 @@ done:
return rc == 0 ? sz : 0;
}
+#if HAVE_DECL_BLK_ZONE_REP_CAPACITY
+#define has_zone_capacity(zi) ((zi)->flags & BLK_ZONE_REP_CAPACITY)
+#define zone_capacity(z) (z)->capacity
+#else
+#define has_zone_capacity(zi) (false)
+#define zone_capacity(z) (z)->len
+#endif
+
/*
* blkzone report
*/
@@ -262,15 +271,22 @@ static int blkzone_report(struct blkzone_control *ctl)
uint64_t wp = entry->wp;
uint8_t cond = entry->cond;
uint64_t len = entry->len;
+ uint64_t cap;
if (!len) {
nr_zones = 0;
break;
}
- printf(_(" start: 0x%09"PRIx64", len 0x%06"PRIx64", wptr 0x%06"PRIx64
+ if (has_zone_capacity(zi))
+ cap = zone_capacity(entry);
+ 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, (type == 0x1) ? 0 : wp - start,
+ 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]);
--
2.26.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] blkzone: add capacity field to zone report
2020-07-01 11:33 [PATCH] blkzone: add capacity field to zone report Shin'ichiro Kawasaki
@ 2020-07-03 8:40 ` Karel Zak
0 siblings, 0 replies; 2+ messages in thread
From: Karel Zak @ 2020-07-03 8:40 UTC (permalink / raw)
To: Shin'ichiro Kawasaki; +Cc: util-linux, Hans Holmberg, Damien Le Moal
On Wed, Jul 01, 2020 at 08:33:26PM +0900, Shin'ichiro Kawasaki wrote:
> configure.ac | 4 ++++
> sys-utils/blkzone.8 | 1 +
> sys-utils/blkzone.c | 20 ++++++++++++++++++--
> 3 files changed, 23 insertions(+), 2 deletions(-)
Applied to the "next" branch. Thanks.
Karel
--
Karel Zak <kzak@redhat.com>
http://karelzak.blogspot.com
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-07-03 8:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-01 11:33 [PATCH] blkzone: add capacity field to zone report Shin'ichiro Kawasaki
2020-07-03 8:40 ` 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).