]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Fix ZTS MMP tests and ztest -M behavior
authorOlaf Faaland <faaland1@llnl.gov>
Sat, 23 Sep 2017 16:28:18 +0000 (09:28 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Sat, 23 Sep 2017 16:28:18 +0000 (09:28 -0700)
Quote "$MMP_IMPORT_MSG" when it is passed as an argument, as it is a
multi-word string.  Some tests were passing when they should not have,
because the grep was only testing for the first word.

Correct the message expected when no hostid is set and the test attempts
to enable multihost.  It did not match the actual output in that
situation.

Disable ztest_reguid() when ztest is invoked with the -M option.  If
ztest performs a reguid, a concurrent import attempt may fail with the
error "one or more devices is currently unavailable" if the guid sum is
calculated on the original device guids but compared against the guid
sum ztest wrote based on the new device guids.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
Closes #6666

cmd/ztest/ztest.c
tests/zfs-tests/tests/functional/mmp/mmp_active_import.ksh
tests/zfs-tests/tests/functional/mmp/mmp_exported_import.ksh
tests/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh

index 8ea263dea9c45e5647495f7bb2df8403d0fbf647..5aa0c85f3b0d41b780120e97682e1ce4b70eef4a 100644 (file)
@@ -5669,6 +5669,9 @@ ztest_reguid(ztest_ds_t *zd, uint64_t id)
        uint64_t orig, load;
        int error;
 
+       if (ztest_opts.zo_mmp_test)
+               return;
+
        orig = spa_guid(spa);
        load = spa_load_guid(spa);
 
index e2e30c7eabc97359817d92bbc9b96d939f822c97..0a487d5b14997ac92635b9fef87b4f849041340e 100755 (executable)
@@ -60,10 +60,9 @@ log_must is_pool_imported $MMP_POOL "-d $MMP_DIR"
 
 # 3. Verify 'zpool import [-f] $MMP_POOL' cannot import the pool.
 MMP_IMPORTED_MSG="Cannot import '$MMP_POOL': pool is imported"
-log_must try_pool_import $MMP_POOL "-d $MMP_DIR" $MMP_IMPORTED_MSG
+log_must try_pool_import $MMP_POOL "-d $MMP_DIR" "$MMP_IMPORTED_MSG"
 for i in {1..10}; do
-       log_must pgrep ztest >/dev/null
-       log_must try_pool_import $MMP_POOL "-f -d $MMP_DIR" $MMP_IMPORTED_MSG
+       log_must try_pool_import $MMP_POOL "-f -d $MMP_DIR" "$MMP_IMPORTED_MSG"
 done
 
 # 4. Kill ztest to make pool eligible for import.  Poll with 'zpool status'.
@@ -79,21 +78,21 @@ log_must wait_pool_imported $MMP_POOL "-d $MMP_DIR"
 #    - hostid=different - previously imported on a different system
 #
 log_must mmp_clear_hostid
-MMP_IMPORTED_MSG="Set the system hostid"
-log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "action" $MMP_IMPORTED_MSG
+MMP_IMPORTED_MSG="Set a unique system hostid"
+log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "action" "$MMP_IMPORTED_MSG"
 
 log_must mmp_set_hostid $HOSTID1
 MMP_IMPORTED_MSG="The pool can be imported"
-log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "action" $MMP_IMPORTED_MSG
+log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "action" "$MMP_IMPORTED_MSG"
 
 log_must mmp_clear_hostid
 log_must mmp_set_hostid $HOSTID2
 MMP_IMPORTED_MSG="The pool was last accessed by another system."
-log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "status" $MMP_IMPORTED_MSG
+log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "status" "$MMP_IMPORTED_MSG"
 
 # 6. Verify 'zpool import $MMP_POOL' fails with the expected message.
 MMP_IMPORTED_MSG="pool was previously in use from another system."
-log_must try_pool_import $MMP_POOL "-d $MMP_DIR" $MMP_IMPORTED_MSG
+log_must try_pool_import $MMP_POOL "-d $MMP_DIR" "$MMP_IMPORTED_MSG"
 
 # 7. Verify 'zpool import -f $MMP_POOL' can now import the pool.
 log_must import_activity_check $MMP_POOL "-f -d $MMP_DIR"
index 6d34f7e77da408b970c89f99502995ccbd00ea6c..3d67deb02c5f1570c3b2b847b7f611de723c8e07 100755 (executable)
@@ -98,8 +98,8 @@ log_must zpool export $TESTPOOL
 log_must mmp_clear_hostid
 
 for opt in "" "-f"; do
-       MMP_IMPORTED_MSG="Set the system hostid"
-       log_must check_pool_import $TESTPOOL "" "action" $MMP_IMPORTED_MSG
+       MMP_IMPORTED_MSG="Set a unique system hostid"
+       log_must check_pool_import $TESTPOOL "" "action" "$MMP_IMPORTED_MSG"
        log_mustnot import_no_activity_check $TESTPOOL $opt
 done
 
index 78ae5f614aaf2ed22cb52cabeb7da6b3894cd286..c5c66373e0d3b82a28aa8779e18625a03a9018fb 100755 (executable)
@@ -90,8 +90,8 @@ log_must import_activity_check $TESTPOOL "-f"
 # 7. Verify multihost=on and hostid zero fails (no activity check)
 log_must zpool export -F $TESTPOOL
 log_must mmp_clear_hostid
-MMP_IMPORTED_MSG="Set the system hostid"
-log_must check_pool_import $TESTPOOL "-f" "action" $MMP_IMPORTED_MSG
+MMP_IMPORTED_MSG="Set a unique system hostid"
+log_must check_pool_import $TESTPOOL "-f" "action" "$MMP_IMPORTED_MSG"
 log_mustnot import_no_activity_check $TESTPOOL "-f"
 
 log_pass "multihost=on|off inactive pool activity checks passed"