mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Allow for '-o feature@<feature>=disabled' on the command line
Sometimes it is desirable to specifically disable one or several features directly on the 'zpool create' command line. $ zpool create -o feature@<feature>=disabled ... Original-patch-by: Turbo Fredriksson <turbo@bayour.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: loli10K <ezomori.nozomu@gmail.com> Closes #3460 Closes #5142 Closes #5324
This commit is contained in:
@@ -250,7 +250,8 @@ tests = [
|
||||
'zpool_create_021_pos', 'zpool_create_022_pos', 'zpool_create_023_neg',
|
||||
'zpool_create_024_pos',
|
||||
'zpool_create_features_001_pos', 'zpool_create_features_002_pos',
|
||||
'zpool_create_features_003_pos', 'zpool_create_features_004_neg']
|
||||
'zpool_create_features_003_pos', 'zpool_create_features_004_neg',
|
||||
'zpool_create_features_005_pos']
|
||||
|
||||
# DISABLED:
|
||||
# zpool_destroy_001_pos - failure should be investigated
|
||||
|
||||
@@ -30,4 +30,5 @@ dist_pkgdata_SCRIPTS = \
|
||||
zpool_create_features_001_pos.ksh \
|
||||
zpool_create_features_002_pos.ksh \
|
||||
zpool_create_features_003_pos.ksh \
|
||||
zpool_create_features_004_neg.ksh
|
||||
zpool_create_features_004_neg.ksh \
|
||||
zpool_create_features_005_pos.ksh
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@
|
||||
verify_runnable "global"
|
||||
|
||||
properties="\
|
||||
feature@async_destroy=disabled \
|
||||
feature@async_destroy=disable \
|
||||
feature@async_destroy=active \
|
||||
feature@xxx_fake_xxx=enabled \
|
||||
unsupported@some_feature=inactive \
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
#!/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 (c) 2012 by Delphix. All rights reserved.
|
||||
#
|
||||
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
. $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# Specifically disabling a feature, all other features should be enabled.
|
||||
#
|
||||
# 1. Loop through all existing features:
|
||||
# a. Create a new pool with '-o feature@XXX=disabled'.
|
||||
# b. Verify that every other feature is 'enabled' or 'active'.
|
||||
#
|
||||
################################################################################
|
||||
|
||||
verify_runnable "global"
|
||||
|
||||
function cleanup
|
||||
{
|
||||
datasetexists $TESTPOOL && log_must $ZPOOL destroy $TESTPOOL
|
||||
}
|
||||
|
||||
function check_features
|
||||
{
|
||||
typeset feature="${1}"
|
||||
|
||||
${ZPOOL} get all ${TESTPOOL} | $GREP feature@ | while read line; do
|
||||
set -- $(echo "${line}")
|
||||
|
||||
if [[ "feature@${feature}" == "${2}" ]]; then
|
||||
# Failure passed feature must be disabled.
|
||||
if [[ "${3}" != "disabled" ]]; then
|
||||
return 1;
|
||||
fi
|
||||
else
|
||||
# Failure other features must be enabled or active.
|
||||
if [[ "${3}" != "enabled" && "${3}" != "active" ]]; then
|
||||
return 2;
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# All features enabled or active except the expected one.
|
||||
return 0
|
||||
}
|
||||
|
||||
log_onexit cleanup
|
||||
|
||||
# Several representative features are tested to keep the test time short.
|
||||
# The features 'extensible_dataset' and 'enabled_txg' are intentionally
|
||||
# excluded because other features depend on them.
|
||||
set -A features \
|
||||
"hole_birth" \
|
||||
"large_blocks" \
|
||||
"large_dnode" \
|
||||
"userobj_accounting"
|
||||
|
||||
typeset -i i=0
|
||||
while (( $i < ${#features[*]} )); do
|
||||
log_assert "'zpool create' creates pools with ${features[i]} disabled"
|
||||
|
||||
log_must $ZPOOL create -f -o "feature@${features[i]}=disabled" \
|
||||
$TESTPOOL $DISKS
|
||||
log_must check_features "${features[i]}"
|
||||
log_must $ZPOOL destroy -f $TESTPOOL
|
||||
(( i = i+1 ))
|
||||
done
|
||||
|
||||
log_pass "'zpool create -o feature@feature=disabled' disables features"
|
||||
Reference in New Issue
Block a user