ZTS: Fix zpool_import_hostid_changed_unclean_export

Update the test case to freeze the pool then export it to better
simulate a hard failure.  This is preferable to copying the vdev
while the pool's imported since with a copy we're not guaranteed
the on-disk state will be consistent.  That can in turn result
in a pool import failure and a spurious test failure.

Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #16578
This commit is contained in:
Brian Behlendorf 2024-09-28 09:18:21 -07:00 committed by GitHub
parent 6f50f8e16b
commit 834b90fb81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -27,8 +27,8 @@
# 1. Set a hostid. # 1. Set a hostid.
# 2. Create a pool. # 2. Create a pool.
# 3. Simulate the pool being torn down without export: # 3. Simulate the pool being torn down without export:
# 3.1. Copy the underlying device state. # 3.1. Sync then freeze the pool.
# 3.2. Export the pool. # 3.2. Export the pool (uncleanly).
# 3.3. Restore the device state from the copy. # 3.3. Restore the device state from the copy.
# 4. Change the hostid. # 4. Change the hostid.
# 5. Verify that importing the pool fails. # 5. Verify that importing the pool fails.
@ -52,10 +52,9 @@ log_must zgenhostid -f $HOSTID1
log_must zpool create $TESTPOOL1 $VDEV0 log_must zpool create $TESTPOOL1 $VDEV0
# 3. Simulate the pool being torn down without export. # 3. Simulate the pool being torn down without export.
log_must cp $VDEV0 $VDEV0.bak sync_pool $TESTPOOL1
log_must zpool freeze $TESTPOOL1
log_must zpool export $TESTPOOL1 log_must zpool export $TESTPOOL1
log_must cp -f $VDEV0.bak $VDEV0
log_must rm -f $VDEV0.bak
# 4. Change the hostid. # 4. Change the hostid.
log_must zgenhostid -f $HOSTID2 log_must zgenhostid -f $HOSTID2