ZTS: pool_checkpoint improvements

The pool_checkpoint tests may incorrectly fail because several of
them invoke zdb for an imported pool.  In this scenario it's not
unexpected for zdb to fail if the pool is modified.  To resolve
this these zdb checks are now done after the pool has been exported.

Additionally, the default cleanup functions assumed the pool would
be imported when they were run.  If this was not the case they're
exit early and fail to cleanup all of the test state causing
subsequent tests to fail.  Add a check to only destroy the pool
when it is imported.

Reviewed-by: John Kennedy <john.kennedy@delphix.com>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #11832
This commit is contained in:
Brian Behlendorf 2021-04-03 08:33:22 -07:00 committed by Tony Hutter
parent 30782f2ff5
commit 7428adc6b7
4 changed files with 15 additions and 7 deletions

View File

@ -52,6 +52,7 @@ fragment_after_checkpoint_and_verify
log_must zpool export $NESTEDPOOL log_must zpool export $NESTEDPOOL
log_must zpool import -d $FILEDISKDIR --rewind-to-checkpoint $NESTEDPOOL log_must zpool import -d $FILEDISKDIR --rewind-to-checkpoint $NESTEDPOOL
log_must zdb $NESTEDPOOL log_must zpool export $NESTEDPOOL
log_must zdb -e -p $FILEDISKDIR $NESTEDPOOL
log_pass "Rewind to checkpoint on a stressed pool." log_pass "Rewind to checkpoint on a stressed pool."

View File

@ -80,13 +80,14 @@ log_mustnot dd if=/dev/urandom of=$NESTEDFS0FILE bs=1M count=300
# #
log_must zpool list $NESTEDPOOL log_must zpool list $NESTEDPOOL
log_must zdb -kc $NESTEDPOOL
log_must zpool export $NESTEDPOOL log_must zpool export $NESTEDPOOL
log_must zdb -e -p $FILEDISKDIR -kc $NESTEDPOOL
log_must zpool import -d $FILEDISKDIR --rewind-to-checkpoint $NESTEDPOOL log_must zpool import -d $FILEDISKDIR --rewind-to-checkpoint $NESTEDPOOL
log_must [ "$(head -c 100 $NESTEDFS0FILE)" = "$FILE0INTRO" ] log_must [ "$(head -c 100 $NESTEDFS0FILE)" = "$FILE0INTRO" ]
log_must zdb $NESTEDPOOL log_must zpool export $NESTEDPOOL
log_must zdb -e -p $FILEDISKDIR $NESTEDPOOL
log_pass "Do not reuse checkpointed space at low capacity." log_pass "Do not reuse checkpointed space at low capacity."

View File

@ -104,7 +104,8 @@ set_tunable64 SPA_DISCARD_MEMORY_LIMIT 16777216
nested_wait_discard_finish nested_wait_discard_finish
log_must zdb $NESTEDPOOL log_must zpool export $NESTEDPOOL
log_must zdb -e -p $FILEDISKDIR $NESTEDPOOL
log_pass "Can export/import but not rewind/checkpoint/discard or " \ log_pass "Can export/import but not rewind/checkpoint/discard or " \
"change pool's config while discarding." "change pool's config while discarding."

View File

@ -154,13 +154,18 @@ function setup_nested_pools
function cleanup_nested_pool function cleanup_nested_pool
{ {
if poolexists $NESTEDPOOL; then
log_must zpool destroy $NESTEDPOOL log_must zpool destroy $NESTEDPOOL
fi
log_must rm -f $FILEDISKS log_must rm -f $FILEDISKS
} }
function cleanup_test_pool function cleanup_test_pool
{ {
if poolexists $TESTPOOL; then
log_must zpool destroy $TESTPOOL log_must zpool destroy $TESTPOOL
fi
# #
# We always clear the labels of all disks # We always clear the labels of all disks