tests: add zfs_unshare_008_pos checking whitespace escaping
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #13165
This commit is contained in:
parent
9b06aa634a
commit
88d5580e51
|
@ -309,7 +309,7 @@ tags = ['functional', 'cli_root', 'zfs_unmount']
|
||||||
[tests/functional/cli_root/zfs_unshare]
|
[tests/functional/cli_root/zfs_unshare]
|
||||||
tests = ['zfs_unshare_001_pos', 'zfs_unshare_002_pos', 'zfs_unshare_003_pos',
|
tests = ['zfs_unshare_001_pos', 'zfs_unshare_002_pos', 'zfs_unshare_003_pos',
|
||||||
'zfs_unshare_004_neg', 'zfs_unshare_005_neg', 'zfs_unshare_006_pos',
|
'zfs_unshare_004_neg', 'zfs_unshare_005_neg', 'zfs_unshare_006_pos',
|
||||||
'zfs_unshare_007_pos']
|
'zfs_unshare_007_pos', 'zfs_unshare_008_pos']
|
||||||
tags = ['functional', 'cli_root', 'zfs_unshare']
|
tags = ['functional', 'cli_root', 'zfs_unshare']
|
||||||
|
|
||||||
[tests/functional/cli_root/zfs_upgrade]
|
[tests/functional/cli_root/zfs_upgrade]
|
||||||
|
|
|
@ -165,6 +165,7 @@ if sys.platform.startswith('freebsd'):
|
||||||
'cli_root/zpool_wait/zpool_wait_trim_basic': ['SKIP', trim_reason],
|
'cli_root/zpool_wait/zpool_wait_trim_basic': ['SKIP', trim_reason],
|
||||||
'cli_root/zpool_wait/zpool_wait_trim_cancel': ['SKIP', trim_reason],
|
'cli_root/zpool_wait/zpool_wait_trim_cancel': ['SKIP', trim_reason],
|
||||||
'cli_root/zpool_wait/zpool_wait_trim_flag': ['SKIP', trim_reason],
|
'cli_root/zpool_wait/zpool_wait_trim_flag': ['SKIP', trim_reason],
|
||||||
|
'cli_root/zfs_unshare/zfs_unshare_008_pos': ['SKIP', na_reason],
|
||||||
'link_count/link_count_001': ['SKIP', na_reason],
|
'link_count/link_count_001': ['SKIP', na_reason],
|
||||||
'casenorm/mixed_create_failure': ['FAIL', 13215],
|
'casenorm/mixed_create_failure': ['FAIL', 13215],
|
||||||
'mmap/mmap_sync_001_pos': ['SKIP', na_reason],
|
'mmap/mmap_sync_001_pos': ['SKIP', na_reason],
|
||||||
|
|
|
@ -1110,6 +1110,18 @@ function datasetnonexists
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# FreeBSD breaks exports(5) at whitespace and doesn't process escapes
|
||||||
|
# Solaris just breaks
|
||||||
|
#
|
||||||
|
# cf. https://github.com/openzfs/zfs/pull/13165#issuecomment-1059845807
|
||||||
|
#
|
||||||
|
# Linux can have spaces (which are \OOO-escaped),
|
||||||
|
# but can't have backslashes because they're parsed recursively
|
||||||
|
function shares_can_have_whitespace
|
||||||
|
{
|
||||||
|
is_linux
|
||||||
|
}
|
||||||
|
|
||||||
function is_shared_freebsd
|
function is_shared_freebsd
|
||||||
{
|
{
|
||||||
typeset fs=$1
|
typeset fs=$1
|
||||||
|
|
|
@ -878,6 +878,7 @@ nobase_dist_datadir_zfs_tests_tests_SCRIPTS += \
|
||||||
functional/cli_root/zfs_unshare/zfs_unshare_005_neg.ksh \
|
functional/cli_root/zfs_unshare/zfs_unshare_005_neg.ksh \
|
||||||
functional/cli_root/zfs_unshare/zfs_unshare_006_pos.ksh \
|
functional/cli_root/zfs_unshare/zfs_unshare_006_pos.ksh \
|
||||||
functional/cli_root/zfs_unshare/zfs_unshare_007_pos.ksh \
|
functional/cli_root/zfs_unshare/zfs_unshare_007_pos.ksh \
|
||||||
|
functional/cli_root/zfs_unshare/zfs_unshare_008_pos.ksh \
|
||||||
functional/cli_root/zfs_upgrade/cleanup.ksh \
|
functional/cli_root/zfs_upgrade/cleanup.ksh \
|
||||||
functional/cli_root/zfs_upgrade/setup.ksh \
|
functional/cli_root/zfs_upgrade/setup.ksh \
|
||||||
functional/cli_root/zfs_upgrade/zfs_upgrade_001_pos.ksh \
|
functional/cli_root/zfs_upgrade/zfs_upgrade_001_pos.ksh \
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/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
|
||||||
|
#
|
||||||
|
|
||||||
|
. $STF_SUITE/include/libtest.shlib
|
||||||
|
|
||||||
|
#
|
||||||
|
# DESCRIPTION:
|
||||||
|
# Verify that datasets mounted at directories with whitespace are properly escaped
|
||||||
|
# both going in (for mountd consumption) and going out (for removing from export list)
|
||||||
|
#
|
||||||
|
# STRATEGY:
|
||||||
|
# 1. Create and share a dataset with spaces, tabs, and newlines
|
||||||
|
# 2. Verify it's shared
|
||||||
|
# 3. Unshare it
|
||||||
|
# 4. Verify it's not shared
|
||||||
|
#
|
||||||
|
|
||||||
|
shares_can_have_whitespace || log_unsupported "Platform doesn't permit whitespace in NFS shares"
|
||||||
|
basename='a + b
|
||||||
|
c d'
|
||||||
|
escname='a\040+\040b\012\040c\011d'
|
||||||
|
|
||||||
|
verify_runnable "global"
|
||||||
|
|
||||||
|
function cleanup
|
||||||
|
{
|
||||||
|
datasetexists "$TESTPOOL/$TESTFS/shared1" && \
|
||||||
|
destroy_dataset "$TESTPOOL/$TESTFS/shared1" -f
|
||||||
|
}
|
||||||
|
|
||||||
|
log_assert "Datasets with spaces are properly shared and unshared."
|
||||||
|
log_onexit cleanup
|
||||||
|
|
||||||
|
log_must zfs create -o sharenfs=on -o mountpoint="$TESTDIR/$basename" "$TESTPOOL/$TESTFS/shared1"
|
||||||
|
log_must is_shared "$TESTDIR/$escname"
|
||||||
|
log_must zfs unshare "$TESTPOOL/$TESTFS/shared1"
|
||||||
|
log_mustnot is_shared "$TESTDIR/$escname"
|
||||||
|
|
||||||
|
log_pass "Datasets with spaces are properly shared and unshared."
|
Loading…
Reference in New Issue