blkzone: add capacity field to zone report
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>
This commit is contained in:
parent
d0aa83147a
commit
e5ad3a6ad0
|
@ -344,6 +344,10 @@ AC_CHECK_HEADERS([security/pam_misc.h],
|
||||||
|
|
||||||
AC_CHECK_HEADERS([linux/blkzoned.h])
|
AC_CHECK_HEADERS([linux/blkzoned.h])
|
||||||
|
|
||||||
|
AC_CHECK_DECLS([BLK_ZONE_REP_CAPACITY], [], [], [
|
||||||
|
#include <linux/blkzoned.h>
|
||||||
|
])
|
||||||
|
|
||||||
AC_CHECK_HEADERS([security/openpam.h], [], [], [
|
AC_CHECK_HEADERS([security/openpam.h], [], [], [
|
||||||
#ifdef HAVE_SECURITY_PAM_APPL_H
|
#ifdef HAVE_SECURITY_PAM_APPL_H
|
||||||
#include <security/pam_appl.h>
|
#include <security/pam_appl.h>
|
||||||
|
|
|
@ -29,6 +29,7 @@ tab(:);
|
||||||
l l.
|
l l.
|
||||||
start:Zone start sector
|
start:Zone start sector
|
||||||
len:Zone length in number of sectors
|
len:Zone length in number of sectors
|
||||||
|
cap:Zone capacity in number of sectors
|
||||||
wptr:Zone write pointer position
|
wptr:Zone write pointer position
|
||||||
reset:Reset write pointer recommended
|
reset:Reset write pointer recommended
|
||||||
non-seq:Non-sequential write resources active
|
non-seq:Non-sequential write resources active
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
@ -189,6 +190,14 @@ done:
|
||||||
return rc == 0 ? sz : 0;
|
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
|
* blkzone report
|
||||||
*/
|
*/
|
||||||
|
@ -269,15 +278,22 @@ static int blkzone_report(struct blkzone_control *ctl)
|
||||||
uint64_t wp = entry->wp;
|
uint64_t wp = entry->wp;
|
||||||
uint8_t cond = entry->cond;
|
uint8_t cond = entry->cond;
|
||||||
uint64_t len = entry->len;
|
uint64_t len = entry->len;
|
||||||
|
uint64_t cap;
|
||||||
|
|
||||||
if (!len) {
|
if (!len) {
|
||||||
nr_zones = 0;
|
nr_zones = 0;
|
||||||
break;
|
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"),
|
" 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,
|
entry->reset, entry->non_seq,
|
||||||
cond, condition_str[cond & (ARRAY_SIZE(condition_str) - 1)],
|
cond, condition_str[cond & (ARRAY_SIZE(condition_str) - 1)],
|
||||||
type, type_text[type]);
|
type, type_text[type]);
|
||||||
|
|
Loading…
Reference in New Issue