summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlaf Faaland <[email protected]>2017-07-14 18:15:00 -0700
committerBrian Behlendorf <[email protected]>2017-07-25 13:22:28 -0400
commite889f0f520971fc2688189cdbe0efde2ccc8ec65 (patch)
treeb62817ae612329e2a6dedcc548fb73cf213b190d
parent0582e403221008480657a88e8f50aecc88397c80 (diff)
Report MMP_STATE_NO_HOSTID immediately
There is no need to perform the activity check before detecting that the user must set the system hostid, because the pool's multihost property is on, but spa_get_hostid() returned 0. The initial call to vdev_uberblock_load() provided the information required. Reviewed-by: Giuseppe Di Natale <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Olaf Faaland <[email protected]> Closes #6388
-rw-r--r--module/zfs/spa.c12
-rwxr-xr-xtests/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh6
2 files changed, 9 insertions, 9 deletions
diff --git a/module/zfs/spa.c b/module/zfs/spa.c
index f576293eb..f1f1444f1 100644
--- a/module/zfs/spa.c
+++ b/module/zfs/spa.c
@@ -2653,12 +2653,6 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
*/
activity_check = spa_activity_check_required(spa, ub, config);
if (activity_check) {
- error = spa_activity_check(spa, ub, config);
- if (error) {
- nvlist_free(label);
- return (error);
- }
-
if (ub->ub_mmp_magic == MMP_MAGIC && ub->ub_mmp_delay &&
spa_get_hostid() == 0) {
nvlist_free(label);
@@ -2667,6 +2661,12 @@ spa_load_impl(spa_t *spa, uint64_t pool_guid, nvlist_t *config,
return (spa_vdev_err(rvd, VDEV_AUX_ACTIVE, EREMOTEIO));
}
+ error = spa_activity_check(spa, ub, config);
+ if (error) {
+ nvlist_free(label);
+ return (error);
+ }
+
fnvlist_add_uint64(spa->spa_load_info,
ZPOOL_CONFIG_MMP_STATE, MMP_STATE_INACTIVE);
fnvlist_add_uint64(spa->spa_load_info,
diff --git a/tests/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh b/tests/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh
index 71f3af5c5..78ae5f614 100755
--- a/tests/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh
+++ b/tests/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh
@@ -28,7 +28,7 @@
# 4. Verify multihost=off and hostid allowed (no activity check)
# 5. Verify multihost=on and hostids match (no activity check)
# 6. Verify multihost=on and hostids differ (activity check)
-# 7. Verify multihost=on and hostid zero fails (activity check)
+# 7. Verify multihost=on and hostid zero fails (no activity check)
#
. $STF_SUITE/include/libtest.shlib
@@ -87,11 +87,11 @@ log_must mmp_set_hostid $HOSTID2
log_mustnot import_activity_check $TESTPOOL ""
log_must import_activity_check $TESTPOOL "-f"
-# 7. Verify multihost=on and hostid zero fails (activity check)
+# 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
-log_mustnot import_activity_check $TESTPOOL "-f"
+log_mustnot import_no_activity_check $TESTPOOL "-f"
log_pass "multihost=on|off inactive pool activity checks passed"