mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
Don't persist temporary pool name on devices
Fix a regression accidentally introduced by e0ab3ab
.
Additionally, add a new script zpool_import_014_pos.ksh to
the ZFS test suite to exercise 'zpool import -t' functionality.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #5466
Closes #5515
This commit is contained in:
parent
547c593661
commit
3500a14595
@ -426,7 +426,7 @@ spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t txg, int getstats)
|
||||
config = fnvlist_alloc();
|
||||
|
||||
fnvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, spa_version(spa));
|
||||
fnvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, spa_name(spa));
|
||||
fnvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, pool_name);
|
||||
fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, spa_state(spa));
|
||||
fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_TXG, txg);
|
||||
fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_GUID, spa_guid(spa));
|
||||
|
@ -295,7 +295,7 @@ tests = ['zpool_import_001_pos',
|
||||
'zpool_import_003_pos', 'zpool_import_004_pos', 'zpool_import_005_pos',
|
||||
'zpool_import_006_pos', 'zpool_import_007_pos', 'zpool_import_008_pos',
|
||||
'zpool_import_009_neg', 'zpool_import_010_pos', 'zpool_import_011_neg',
|
||||
'zpool_import_013_neg',
|
||||
'zpool_import_013_neg', 'zpool_import_014_pos',
|
||||
'zpool_import_features_001_pos', 'zpool_import_features_002_neg',
|
||||
'zpool_import_features_003_pos','zpool_import_missing_001_pos',
|
||||
'zpool_import_missing_002_pos', 'zpool_import_missing_003_pos',
|
||||
|
@ -16,6 +16,7 @@ dist_pkgdata_SCRIPTS = \
|
||||
zpool_import_011_neg.ksh \
|
||||
zpool_import_012_pos.ksh \
|
||||
zpool_import_013_neg.ksh \
|
||||
zpool_import_014_pos.ksh \
|
||||
zpool_import_all_001_pos.ksh \
|
||||
zpool_import_features_001_pos.ksh \
|
||||
zpool_import_features_002_neg.ksh \
|
||||
|
@ -0,0 +1,91 @@
|
||||
#!/bin/ksh -p
|
||||
#
|
||||
# CDDL HEADER START
|
||||
#
|
||||
# The contents of this file are subject to the terms of the
|
||||
# Common Development and Distribution License (the "License").
|
||||
# You may not use this file except in compliance with the License.
|
||||
#
|
||||
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
||||
# or http://www.opensolaris.org/os/licensing.
|
||||
# See the License for the specific language governing permissions
|
||||
# and limitations under the License.
|
||||
#
|
||||
# When distributing Covered Code, include this CDDL HEADER in each
|
||||
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
||||
# If applicable, add the following below this CDDL HEADER, with the
|
||||
# fields enclosed by brackets "[]" replaced with your own identifying
|
||||
# information: Portions Copyright [yyyy] [name of copyright owner]
|
||||
#
|
||||
# CDDL HEADER END
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright 2016, loli10K. All rights reserved.
|
||||
#
|
||||
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
. $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg
|
||||
|
||||
#
|
||||
# DESCRIPTION:
|
||||
# Temporary pool names should not be persisted on devices.
|
||||
#
|
||||
# STRATEGY:
|
||||
# 1. Create pool A, then export it.
|
||||
# 2. Re-import the pool with a temporary name B, then export it.
|
||||
# 3. Verify device labels still contain the expected pool name (A).
|
||||
#
|
||||
|
||||
verify_runnable "global"
|
||||
|
||||
function cleanup
|
||||
{
|
||||
typeset dt
|
||||
for dt in $poolB $poolA; do
|
||||
destroy_pool $dt
|
||||
done
|
||||
|
||||
log_must $RM -rf $DEVICE_DIR/*
|
||||
typeset i=0
|
||||
while (( i < $MAX_NUM )); do
|
||||
log_must $MKFILE $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i
|
||||
((i += 1))
|
||||
done
|
||||
}
|
||||
|
||||
#
|
||||
# Verify name of (exported) pool from device $1 label is equal to $2
|
||||
# $1 device
|
||||
# $2 pool name
|
||||
#
|
||||
function verify_pool_name
|
||||
{
|
||||
typeset device=$1
|
||||
typeset poolname=$2
|
||||
typeset labelname
|
||||
|
||||
$ZDB -e -l $device | $GREP " name:" | {
|
||||
while read labelname ; do
|
||||
if [[ "name: '$poolname'" != "$labelname" ]]; then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
log_assert "Temporary pool names should not be persisted on devices."
|
||||
log_onexit cleanup
|
||||
|
||||
poolA=poolA.$$; poolB=poolB.$$;
|
||||
|
||||
log_must $ZPOOL create $poolA $VDEV0
|
||||
log_must $ZPOOL export $poolA
|
||||
|
||||
log_must $ZPOOL import -t $poolA $poolB -d $DEVICE_DIR
|
||||
log_must $ZPOOL export $poolB
|
||||
|
||||
log_must eval "verify_pool_name $VDEV0 $poolA"
|
||||
|
||||
log_pass "Temporary pool names are not persisted on devices."
|
Loading…
Reference in New Issue
Block a user