mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-23 19:04:45 +03:00
Illumos #1948: zpool list should show more detailed pool info
Reviewed by: Adam Leventhal <ahl@delphix.com> Reviewed by: Matt Ahrens <matt@delphix.com> Reviewed by: Eric Schrock <eric.schrock@delphix.com> Reviewed by: Richard Lowe <richlowe@richlowe.net> Reviewed by: Albert Lee <trisk@nexenta.com> Reviewed by: Dan McDonald <danmcd@nexenta.com> Reviewed by: Garrett D'Amore <garrett@damore.org> Approved by: Eric Schrock <eric.schrock@delphix.com> References: https://www.illumos.org/issues/1948 Ported by: Martin Matuska <martin@matuska.org> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #685
This commit is contained in:
committed by
Brian Behlendorf
parent
95fd8c9a7f
commit
1bd201e70d
+13
-4
@@ -22,7 +22,7 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2011 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <sys/zfs_context.h>
|
||||
@@ -109,7 +109,7 @@ vdev_get_min_asize(vdev_t *vd)
|
||||
vdev_t *pvd = vd->vdev_parent;
|
||||
|
||||
/*
|
||||
* The our parent is NULL (inactive spare or cache) or is the root,
|
||||
* If our parent is NULL (inactive spare or cache) or is the root,
|
||||
* just return our own asize.
|
||||
*/
|
||||
if (pvd == NULL)
|
||||
@@ -747,6 +747,7 @@ vdev_add_parent(vdev_t *cvd, vdev_ops_t *ops)
|
||||
|
||||
mvd->vdev_asize = cvd->vdev_asize;
|
||||
mvd->vdev_min_asize = cvd->vdev_min_asize;
|
||||
mvd->vdev_max_asize = cvd->vdev_max_asize;
|
||||
mvd->vdev_ashift = cvd->vdev_ashift;
|
||||
mvd->vdev_state = cvd->vdev_state;
|
||||
mvd->vdev_crtxg = cvd->vdev_crtxg;
|
||||
@@ -1132,7 +1133,8 @@ vdev_open(vdev_t *vd)
|
||||
spa_t *spa = vd->vdev_spa;
|
||||
int error;
|
||||
uint64_t osize = 0;
|
||||
uint64_t asize, psize;
|
||||
uint64_t max_osize = 0;
|
||||
uint64_t asize, max_asize, psize;
|
||||
uint64_t ashift = 0;
|
||||
int c;
|
||||
|
||||
@@ -1164,7 +1166,7 @@ vdev_open(vdev_t *vd)
|
||||
return (ENXIO);
|
||||
}
|
||||
|
||||
error = vd->vdev_ops->vdev_op_open(vd, &osize, &ashift);
|
||||
error = vd->vdev_ops->vdev_op_open(vd, &osize, &max_osize, &ashift);
|
||||
|
||||
/*
|
||||
* Reset the vdev_reopening flag so that we actually close
|
||||
@@ -1222,6 +1224,7 @@ vdev_open(vdev_t *vd)
|
||||
}
|
||||
|
||||
osize = P2ALIGN(osize, (uint64_t)sizeof (vdev_label_t));
|
||||
max_osize = P2ALIGN(max_osize, (uint64_t)sizeof (vdev_label_t));
|
||||
|
||||
if (vd->vdev_children == 0) {
|
||||
if (osize < SPA_MINDEVSIZE) {
|
||||
@@ -1231,6 +1234,8 @@ vdev_open(vdev_t *vd)
|
||||
}
|
||||
psize = osize;
|
||||
asize = osize - (VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE);
|
||||
max_asize = max_osize - (VDEV_LABEL_START_SIZE +
|
||||
VDEV_LABEL_END_SIZE);
|
||||
} else {
|
||||
if (vd->vdev_parent != NULL && osize < SPA_MINDEVSIZE -
|
||||
(VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE)) {
|
||||
@@ -1240,6 +1245,7 @@ vdev_open(vdev_t *vd)
|
||||
}
|
||||
psize = 0;
|
||||
asize = osize;
|
||||
max_asize = max_osize;
|
||||
}
|
||||
|
||||
vd->vdev_psize = psize;
|
||||
@@ -1259,6 +1265,7 @@ vdev_open(vdev_t *vd)
|
||||
* For testing purposes, a higher ashift can be requested.
|
||||
*/
|
||||
vd->vdev_asize = asize;
|
||||
vd->vdev_max_asize = max_asize;
|
||||
vd->vdev_ashift = MAX(ashift, vd->vdev_ashift);
|
||||
} else {
|
||||
/*
|
||||
@@ -1269,6 +1276,7 @@ vdev_open(vdev_t *vd)
|
||||
VDEV_AUX_BAD_LABEL);
|
||||
return (EINVAL);
|
||||
}
|
||||
vd->vdev_max_asize = max_asize;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2499,6 +2507,7 @@ vdev_get_stats(vdev_t *vd, vdev_stat_t *vs)
|
||||
vs->vs_rsize = vdev_get_min_asize(vd);
|
||||
if (vd->vdev_ops->vdev_op_leaf)
|
||||
vs->vs_rsize += VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE;
|
||||
vs->vs_esize = vd->vdev_max_asize - vd->vdev_asize;
|
||||
mutex_exit(&vd->vdev_stat_lock);
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user