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,
|
||||
ZPOOL_CONFIG_TYPE,
|
||||
&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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user