Fix "zpool add" crash when a replacing vdev has a spare child
Fix an assertion in zpool that causes a crash when running any "zpool add" command on a spare that contains a replacing vdev with a spare child. This likely affects Illumos, too. PR: 225546 MFC after: 3 weeks Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D14138
This commit is contained in:
parent
8162ec9b35
commit
ad4bbe575b
@ -688,6 +688,21 @@ get_replication(nvlist_t *nvroot, boolean_t fatal)
|
|||||||
verify(nvlist_lookup_string(cnv,
|
verify(nvlist_lookup_string(cnv,
|
||||||
ZPOOL_CONFIG_TYPE,
|
ZPOOL_CONFIG_TYPE,
|
||||||
&childtype) == 0);
|
&childtype) == 0);
|
||||||
|
if (strcmp(childtype,
|
||||||
|
VDEV_TYPE_SPARE) == 0) {
|
||||||
|
/* We have a replacing vdev with
|
||||||
|
* a spare child. Get the first
|
||||||
|
* real child of the spare
|
||||||
|
*/
|
||||||
|
verify(
|
||||||
|
nvlist_lookup_nvlist_array(
|
||||||
|
cnv,
|
||||||
|
ZPOOL_CONFIG_CHILDREN,
|
||||||
|
&rchild,
|
||||||
|
&rchildren) == 0);
|
||||||
|
assert(rchildren >= 2);
|
||||||
|
cnv = rchild[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
verify(nvlist_lookup_string(cnv,
|
verify(nvlist_lookup_string(cnv,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user