mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 03:19:35 +03:00
ztest: update expectation for sparing a special device
Commit c23738c70e
modified the expected
behavior of attach to prevent hot spares from being used as special
vdev replacements. We update ztest's expectations accordingly to
prevent it from failing when testing the updated behavior.
Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #14351
This commit is contained in:
parent
40d7e971ff
commit
4208a052c2
@ -3597,6 +3597,7 @@ ztest_vdev_attach_detach(ztest_ds_t *zd, uint64_t id)
|
|||||||
int newvd_is_spare = B_FALSE;
|
int newvd_is_spare = B_FALSE;
|
||||||
int newvd_is_dspare = B_FALSE;
|
int newvd_is_dspare = B_FALSE;
|
||||||
int oldvd_is_log;
|
int oldvd_is_log;
|
||||||
|
int oldvd_is_special;
|
||||||
int error, expected_error;
|
int error, expected_error;
|
||||||
|
|
||||||
if (ztest_opts.zo_mmp_test)
|
if (ztest_opts.zo_mmp_test)
|
||||||
@ -3671,6 +3672,9 @@ ztest_vdev_attach_detach(ztest_ds_t *zd, uint64_t id)
|
|||||||
oldguid = oldvd->vdev_guid;
|
oldguid = oldvd->vdev_guid;
|
||||||
oldsize = vdev_get_min_asize(oldvd);
|
oldsize = vdev_get_min_asize(oldvd);
|
||||||
oldvd_is_log = oldvd->vdev_top->vdev_islog;
|
oldvd_is_log = oldvd->vdev_top->vdev_islog;
|
||||||
|
oldvd_is_special =
|
||||||
|
oldvd->vdev_top->vdev_alloc_bias == VDEV_BIAS_SPECIAL ||
|
||||||
|
oldvd->vdev_top->vdev_alloc_bias == VDEV_BIAS_DEDUP;
|
||||||
(void) strlcpy(oldpath, oldvd->vdev_path, MAXPATHLEN);
|
(void) strlcpy(oldpath, oldvd->vdev_path, MAXPATHLEN);
|
||||||
pvd = oldvd->vdev_parent;
|
pvd = oldvd->vdev_parent;
|
||||||
pguid = pvd->vdev_guid;
|
pguid = pvd->vdev_guid;
|
||||||
@ -3749,7 +3753,8 @@ ztest_vdev_attach_detach(ztest_ds_t *zd, uint64_t id)
|
|||||||
pvd->vdev_ops == &vdev_replacing_ops ||
|
pvd->vdev_ops == &vdev_replacing_ops ||
|
||||||
pvd->vdev_ops == &vdev_spare_ops))
|
pvd->vdev_ops == &vdev_spare_ops))
|
||||||
expected_error = ENOTSUP;
|
expected_error = ENOTSUP;
|
||||||
else if (newvd_is_spare && (!replacing || oldvd_is_log))
|
else if (newvd_is_spare &&
|
||||||
|
(!replacing || oldvd_is_log || oldvd_is_special))
|
||||||
expected_error = ENOTSUP;
|
expected_error = ENOTSUP;
|
||||||
else if (newvd == oldvd)
|
else if (newvd == oldvd)
|
||||||
expected_error = replacing ? 0 : EBUSY;
|
expected_error = replacing ? 0 : EBUSY;
|
||||||
|
Loading…
Reference in New Issue
Block a user