Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions cmd/zpool/zpool_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -6960,7 +6960,19 @@ collect_vdev_prop(zpool_prop_t prop, uint64_t value, const char *str,

switch (prop) {
case ZPOOL_PROP_SIZE:
case ZPOOL_PROP_NORMAL_SIZE:
case ZPOOL_PROP_SPECIAL_SIZE:
case ZPOOL_PROP_DEDUP_SIZE:
case ZPOOL_PROP_LOG_SIZE:
case ZPOOL_PROP_ELOG_SIZE:
case ZPOOL_PROP_SELOG_SIZE:
case ZPOOL_PROP_EXPANDSZ:
case ZPOOL_PROP_NORMAL_EXPANDSZ:
case ZPOOL_PROP_SPECIAL_EXPANDSZ:
case ZPOOL_PROP_DEDUP_EXPANDSZ:
case ZPOOL_PROP_LOG_EXPANDSZ:
case ZPOOL_PROP_ELOG_EXPANDSZ:
case ZPOOL_PROP_SELOG_EXPANDSZ:
case ZPOOL_PROP_CHECKPOINT:
case ZPOOL_PROP_DEDUPRATIO:
case ZPOOL_PROP_DEDUPCACHED:
Expand All @@ -6971,6 +6983,12 @@ collect_vdev_prop(zpool_prop_t prop, uint64_t value, const char *str,
format);
break;
case ZPOOL_PROP_FRAGMENTATION:
case ZPOOL_PROP_NORMAL_FRAGMENTATION:
case ZPOOL_PROP_SPECIAL_FRAGMENTATION:
case ZPOOL_PROP_DEDUP_FRAGMENTATION:
case ZPOOL_PROP_LOG_FRAGMENTATION:
case ZPOOL_PROP_ELOG_FRAGMENTATION:
case ZPOOL_PROP_SELOG_FRAGMENTATION:
if (value == ZFS_FRAG_INVALID) {
(void) strlcpy(propval, "-", sizeof (propval));
} else if (format == ZFS_NICENUM_RAW) {
Expand All @@ -6982,6 +7000,12 @@ collect_vdev_prop(zpool_prop_t prop, uint64_t value, const char *str,
}
break;
case ZPOOL_PROP_CAPACITY:
case ZPOOL_PROP_NORMAL_CAPACITY:
case ZPOOL_PROP_SPECIAL_CAPACITY:
case ZPOOL_PROP_DEDUP_CAPACITY:
case ZPOOL_PROP_LOG_CAPACITY:
case ZPOOL_PROP_ELOG_CAPACITY:
case ZPOOL_PROP_SELOG_CAPACITY:
/* capacity value is in parts-per-10,000 (aka permyriad) */
if (format == ZFS_NICENUM_RAW)
(void) snprintf(propval, sizeof (propval), "%llu",
Expand Down
81 changes: 81 additions & 0 deletions include/sys/fs/zfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -275,9 +275,90 @@ typedef enum {
ZPOOL_PROP_LAST_SCRUBBED_TXG,
ZPOOL_PROP_DEDUPUSED,
ZPOOL_PROP_DEDUPSAVED,
ZPOOL_PROP_AVAILABLE,
ZPOOL_PROP_USABLE,
ZPOOL_PROP_USED,
ZPOOL_PROP_NORMAL_SIZE,
ZPOOL_PROP_NORMAL_CAPACITY,
ZPOOL_PROP_NORMAL_FREE,
ZPOOL_PROP_NORMAL_ALLOCATED,
ZPOOL_PROP_NORMAL_AVAILABLE,
ZPOOL_PROP_NORMAL_USABLE,
ZPOOL_PROP_NORMAL_USED,
ZPOOL_PROP_NORMAL_EXPANDSZ,
ZPOOL_PROP_NORMAL_FRAGMENTATION,
ZPOOL_PROP_SPECIAL_SIZE,
ZPOOL_PROP_SPECIAL_CAPACITY,
ZPOOL_PROP_SPECIAL_FREE,
ZPOOL_PROP_SPECIAL_ALLOCATED,
ZPOOL_PROP_SPECIAL_AVAILABLE,
ZPOOL_PROP_SPECIAL_USABLE,
ZPOOL_PROP_SPECIAL_USED,
ZPOOL_PROP_SPECIAL_EXPANDSZ,
ZPOOL_PROP_SPECIAL_FRAGMENTATION,
ZPOOL_PROP_DEDUP_SIZE,
ZPOOL_PROP_DEDUP_CAPACITY,
ZPOOL_PROP_DEDUP_FREE,
ZPOOL_PROP_DEDUP_ALLOCATED,
ZPOOL_PROP_DEDUP_AVAILABLE,
ZPOOL_PROP_DEDUP_USABLE,
ZPOOL_PROP_DEDUP_USED,
ZPOOL_PROP_DEDUP_EXPANDSZ,
ZPOOL_PROP_DEDUP_FRAGMENTATION,
ZPOOL_PROP_LOG_SIZE,
ZPOOL_PROP_LOG_CAPACITY,
ZPOOL_PROP_LOG_FREE,
ZPOOL_PROP_LOG_ALLOCATED,
ZPOOL_PROP_LOG_AVAILABLE,
ZPOOL_PROP_LOG_USABLE,
ZPOOL_PROP_LOG_USED,
ZPOOL_PROP_LOG_EXPANDSZ,
ZPOOL_PROP_LOG_FRAGMENTATION,
ZPOOL_PROP_ELOG_SIZE,
ZPOOL_PROP_ELOG_CAPACITY,
ZPOOL_PROP_ELOG_FREE,
ZPOOL_PROP_ELOG_ALLOCATED,
ZPOOL_PROP_ELOG_AVAILABLE,
ZPOOL_PROP_ELOG_USABLE,
ZPOOL_PROP_ELOG_USED,
ZPOOL_PROP_ELOG_EXPANDSZ,
ZPOOL_PROP_ELOG_FRAGMENTATION,
ZPOOL_PROP_SELOG_SIZE,
ZPOOL_PROP_SELOG_CAPACITY,
ZPOOL_PROP_SELOG_FREE,
ZPOOL_PROP_SELOG_ALLOCATED,
ZPOOL_PROP_SELOG_AVAILABLE,
ZPOOL_PROP_SELOG_USABLE,
ZPOOL_PROP_SELOG_USED,
ZPOOL_PROP_SELOG_EXPANDSZ,
ZPOOL_PROP_SELOG_FRAGMENTATION,
ZPOOL_NUM_PROPS
} zpool_prop_t;

/* Offsets for metaslab class properties. */
typedef enum {
ZPOOL_MC_PROP_SIZE,
ZPOOL_MC_PROP_CAPACITY,
ZPOOL_MC_PROP_FREE,
ZPOOL_MC_PROP_ALLOCATED,
ZPOOL_MC_PROP_AVAILABLE,
ZPOOL_MC_PROP_USABLE,
ZPOOL_MC_PROP_USED,
ZPOOL_MC_PROP_EXPANDSZ,
ZPOOL_MC_PROP_FRAGMENTATION,
ZPOOL_NUM_MC_PROPS
} zpool_mc_prop_t;

/* Offsets for metaslab class property groups. */
typedef enum {
ZPOOL_MC_PROPS_NORMAL = ZPOOL_PROP_NORMAL_SIZE,
ZPOOL_MC_PROPS_SPECIAL = ZPOOL_PROP_SPECIAL_SIZE,
ZPOOL_MC_PROPS_DEDUP = ZPOOL_PROP_DEDUP_SIZE,
ZPOOL_MC_PROPS_LOG = ZPOOL_PROP_LOG_SIZE,
ZPOOL_MC_PROPS_ELOG = ZPOOL_PROP_ELOG_SIZE,
ZPOOL_MC_PROPS_SELOG = ZPOOL_PROP_SELOG_SIZE,
} zpool_mc_props_t;

/* Small enough to not hog a whole line of printout in zpool(8). */
#define ZPROP_MAX_COMMENT 32
#define ZPROP_BOOLEAN_NA 2
Expand Down
59 changes: 58 additions & 1 deletion lib/libzfs/libzfs.abi
Original file line number Diff line number Diff line change
Expand Up @@ -3372,7 +3372,64 @@
<enumerator name='ZPOOL_PROP_LAST_SCRUBBED_TXG' value='39'/>
<enumerator name='ZPOOL_PROP_DEDUPUSED' value='40'/>
<enumerator name='ZPOOL_PROP_DEDUPSAVED' value='41'/>
<enumerator name='ZPOOL_NUM_PROPS' value='42'/>
<enumerator name='ZPOOL_PROP_AVAILABLE' value='42'/>
<enumerator name='ZPOOL_PROP_USABLE' value='43'/>
<enumerator name='ZPOOL_PROP_USED' value='44'/>
<enumerator name='ZPOOL_PROP_NORMAL_SIZE' value='45'/>
<enumerator name='ZPOOL_PROP_NORMAL_CAPACITY' value='46'/>
<enumerator name='ZPOOL_PROP_NORMAL_FREE' value='47'/>
<enumerator name='ZPOOL_PROP_NORMAL_ALLOCATED' value='48'/>
<enumerator name='ZPOOL_PROP_NORMAL_AVAILABLE' value='49'/>
<enumerator name='ZPOOL_PROP_NORMAL_USABLE' value='50'/>
<enumerator name='ZPOOL_PROP_NORMAL_USED' value='51'/>
<enumerator name='ZPOOL_PROP_NORMAL_EXPANDSZ' value='52'/>
<enumerator name='ZPOOL_PROP_NORMAL_FRAGMENTATION' value='53'/>
<enumerator name='ZPOOL_PROP_SPECIAL_SIZE' value='54'/>
<enumerator name='ZPOOL_PROP_SPECIAL_CAPACITY' value='55'/>
<enumerator name='ZPOOL_PROP_SPECIAL_FREE' value='56'/>
<enumerator name='ZPOOL_PROP_SPECIAL_ALLOCATED' value='57'/>
<enumerator name='ZPOOL_PROP_SPECIAL_AVAILABLE' value='58'/>
<enumerator name='ZPOOL_PROP_SPECIAL_USABLE' value='59'/>
<enumerator name='ZPOOL_PROP_SPECIAL_USED' value='60'/>
<enumerator name='ZPOOL_PROP_SPECIAL_EXPANDSZ' value='61'/>
<enumerator name='ZPOOL_PROP_SPECIAL_FRAGMENTATION' value='62'/>
<enumerator name='ZPOOL_PROP_DEDUP_SIZE' value='63'/>
<enumerator name='ZPOOL_PROP_DEDUP_CAPACITY' value='64'/>
<enumerator name='ZPOOL_PROP_DEDUP_FREE' value='65'/>
<enumerator name='ZPOOL_PROP_DEDUP_ALLOCATED' value='66'/>
<enumerator name='ZPOOL_PROP_DEDUP_AVAILABLE' value='67'/>
<enumerator name='ZPOOL_PROP_DEDUP_USABLE' value='68'/>
<enumerator name='ZPOOL_PROP_DEDUP_USED' value='69'/>
<enumerator name='ZPOOL_PROP_DEDUP_EXPANDSZ' value='70'/>
<enumerator name='ZPOOL_PROP_DEDUP_FRAGMENTATION' value='71'/>
<enumerator name='ZPOOL_PROP_LOG_SIZE' value='72'/>
<enumerator name='ZPOOL_PROP_LOG_CAPACITY' value='73'/>
<enumerator name='ZPOOL_PROP_LOG_FREE' value='74'/>
<enumerator name='ZPOOL_PROP_LOG_ALLOCATED' value='75'/>
<enumerator name='ZPOOL_PROP_LOG_AVAILABLE' value='76'/>
<enumerator name='ZPOOL_PROP_LOG_USABLE' value='77'/>
<enumerator name='ZPOOL_PROP_LOG_USED' value='78'/>
<enumerator name='ZPOOL_PROP_LOG_EXPANDSZ' value='79'/>
<enumerator name='ZPOOL_PROP_LOG_FRAGMENTATION' value='80'/>
<enumerator name='ZPOOL_PROP_ELOG_SIZE' value='81'/>
<enumerator name='ZPOOL_PROP_ELOG_CAPACITY' value='82'/>
<enumerator name='ZPOOL_PROP_ELOG_FREE' value='83'/>
<enumerator name='ZPOOL_PROP_ELOG_ALLOCATED' value='84'/>
<enumerator name='ZPOOL_PROP_ELOG_AVAILABLE' value='85'/>
<enumerator name='ZPOOL_PROP_ELOG_USABLE' value='86'/>
<enumerator name='ZPOOL_PROP_ELOG_USED' value='87'/>
<enumerator name='ZPOOL_PROP_ELOG_EXPANDSZ' value='88'/>
<enumerator name='ZPOOL_PROP_ELOG_FRAGMENTATION' value='89'/>
<enumerator name='ZPOOL_PROP_SELOG_SIZE' value='90'/>
<enumerator name='ZPOOL_PROP_SELOG_CAPACITY' value='91'/>
<enumerator name='ZPOOL_PROP_SELOG_FREE' value='92'/>
<enumerator name='ZPOOL_PROP_SELOG_ALLOCATED' value='93'/>
<enumerator name='ZPOOL_PROP_SELOG_AVAILABLE' value='94'/>
<enumerator name='ZPOOL_PROP_SELOG_USABLE' value='95'/>
<enumerator name='ZPOOL_PROP_SELOG_USED' value='96'/>
<enumerator name='ZPOOL_PROP_SELOG_EXPANDSZ' value='97'/>
<enumerator name='ZPOOL_PROP_SELOG_FRAGMENTATION' value='98'/>
<enumerator name='ZPOOL_NUM_PROPS' value='99'/>
</enum-decl>
<typedef-decl name='zpool_prop_t' type-id='af1ba157' id='5d0c23fb'/>
<typedef-decl name='regoff_t' type-id='95e97e5e' id='54a2a2a8'/>
Expand Down
59 changes: 58 additions & 1 deletion lib/libzfs/libzfs_pool.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,8 +370,47 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
zfs_fallthrough;

case ZPOOL_PROP_SIZE:
case ZPOOL_PROP_NORMAL_SIZE:
case ZPOOL_PROP_SPECIAL_SIZE:
case ZPOOL_PROP_DEDUP_SIZE:
case ZPOOL_PROP_LOG_SIZE:
case ZPOOL_PROP_ELOG_SIZE:
case ZPOOL_PROP_SELOG_SIZE:
case ZPOOL_PROP_ALLOCATED:
case ZPOOL_PROP_NORMAL_ALLOCATED:
case ZPOOL_PROP_SPECIAL_ALLOCATED:
case ZPOOL_PROP_DEDUP_ALLOCATED:
case ZPOOL_PROP_LOG_ALLOCATED:
case ZPOOL_PROP_ELOG_ALLOCATED:
case ZPOOL_PROP_SELOG_ALLOCATED:
case ZPOOL_PROP_AVAILABLE:
case ZPOOL_PROP_NORMAL_AVAILABLE:
case ZPOOL_PROP_SPECIAL_AVAILABLE:
case ZPOOL_PROP_DEDUP_AVAILABLE:
case ZPOOL_PROP_LOG_AVAILABLE:
case ZPOOL_PROP_ELOG_AVAILABLE:
case ZPOOL_PROP_SELOG_AVAILABLE:
case ZPOOL_PROP_FREE:
case ZPOOL_PROP_NORMAL_FREE:
case ZPOOL_PROP_SPECIAL_FREE:
case ZPOOL_PROP_DEDUP_FREE:
case ZPOOL_PROP_LOG_FREE:
case ZPOOL_PROP_ELOG_FREE:
case ZPOOL_PROP_SELOG_FREE:
case ZPOOL_PROP_USABLE:
case ZPOOL_PROP_NORMAL_USABLE:
case ZPOOL_PROP_SPECIAL_USABLE:
case ZPOOL_PROP_DEDUP_USABLE:
case ZPOOL_PROP_LOG_USABLE:
case ZPOOL_PROP_ELOG_USABLE:
case ZPOOL_PROP_SELOG_USABLE:
case ZPOOL_PROP_USED:
case ZPOOL_PROP_NORMAL_USED:
case ZPOOL_PROP_SPECIAL_USED:
case ZPOOL_PROP_DEDUP_USED:
case ZPOOL_PROP_LOG_USED:
case ZPOOL_PROP_ELOG_USED:
case ZPOOL_PROP_SELOG_USED:
case ZPOOL_PROP_FREEING:
case ZPOOL_PROP_LEAKED:
case ZPOOL_PROP_ASHIFT:
Expand All @@ -391,6 +430,12 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
break;

case ZPOOL_PROP_EXPANDSZ:
case ZPOOL_PROP_NORMAL_EXPANDSZ:
case ZPOOL_PROP_SPECIAL_EXPANDSZ:
case ZPOOL_PROP_DEDUP_EXPANDSZ:
case ZPOOL_PROP_LOG_EXPANDSZ:
case ZPOOL_PROP_ELOG_EXPANDSZ:
case ZPOOL_PROP_SELOG_EXPANDSZ:
case ZPOOL_PROP_CHECKPOINT:
if (intval == 0) {
(void) strlcpy(buf, "-", len);
Expand All @@ -403,6 +448,12 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
break;

case ZPOOL_PROP_CAPACITY:
case ZPOOL_PROP_NORMAL_CAPACITY:
case ZPOOL_PROP_SPECIAL_CAPACITY:
case ZPOOL_PROP_DEDUP_CAPACITY:
case ZPOOL_PROP_LOG_CAPACITY:
case ZPOOL_PROP_ELOG_CAPACITY:
case ZPOOL_PROP_SELOG_CAPACITY:
if (literal) {
(void) snprintf(buf, len, "%llu",
(u_longlong_t)intval);
Expand All @@ -413,7 +464,13 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
break;

case ZPOOL_PROP_FRAGMENTATION:
if (intval == UINT64_MAX) {
case ZPOOL_PROP_NORMAL_FRAGMENTATION:
case ZPOOL_PROP_SPECIAL_FRAGMENTATION:
case ZPOOL_PROP_DEDUP_FRAGMENTATION:
case ZPOOL_PROP_LOG_FRAGMENTATION:
case ZPOOL_PROP_ELOG_FRAGMENTATION:
case ZPOOL_PROP_SELOG_FRAGMENTATION:
if (intval == ZFS_FRAG_INVALID) {
(void) strlcpy(buf, "-", len);
} else if (literal) {
(void) snprintf(buf, len, "%llu",
Expand Down
Loading
Loading