diff options
author | Tony Hutter <[email protected]> | 2018-04-09 14:24:46 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-04-09 14:24:46 -0700 |
commit | 4f301661dfe7e90574ad634f8b7fe8da7e6b4064 (patch) | |
tree | b68c6ff4d5177d5d26092e601f16d48c0aaf7b14 /tests | |
parent | 3b0d99289a8e473b059605a83d4ce0bd505ec3d3 (diff) |
Revert "Handle zap_add() failures in mixed ... "
This reverts commit cc63068e95ee725cce03b1b7ce50179825a6cda5.
Under certain circumstances this change can result in an ENOSPC
error when adding new files to a directory. See #7401 for full
details.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tony Hutter <[email protected]>
Issue #7401
Cloes #7416
Diffstat (limited to 'tests')
-rw-r--r-- | tests/runfiles/linux.run | 2 | ||||
-rw-r--r-- | tests/zfs-tests/tests/functional/casenorm/Makefile.am | 1 | ||||
-rwxr-xr-x | tests/zfs-tests/tests/functional/casenorm/mixed_create_failure.ksh | 136 |
3 files changed, 1 insertions, 138 deletions
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index 185293716..1cf8f91e8 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -59,7 +59,7 @@ tags = ['functional', 'cachefile'] # 'mixed_none_lookup', 'mixed_none_lookup_ci', 'mixed_none_delete', # 'mixed_formd_lookup', 'mixed_formd_lookup_ci', 'mixed_formd_delete'] [tests/functional/casenorm] -tests = ['case_all_values', 'norm_all_values', 'mixed_create_failure'] +tests = ['case_all_values', 'norm_all_values'] tags = ['functional', 'casenorm'] [tests/functional/channel_program/lua_core] diff --git a/tests/zfs-tests/tests/functional/casenorm/Makefile.am b/tests/zfs-tests/tests/functional/casenorm/Makefile.am index b284a2560..65dd156e7 100644 --- a/tests/zfs-tests/tests/functional/casenorm/Makefile.am +++ b/tests/zfs-tests/tests/functional/casenorm/Makefile.am @@ -7,7 +7,6 @@ dist_pkgdata_SCRIPTS = \ insensitive_formd_lookup.ksh \ insensitive_none_delete.ksh \ insensitive_none_lookup.ksh \ - mixed_create_failure.ksh \ mixed_formd_delete.ksh \ mixed_formd_lookup_ci.ksh \ mixed_formd_lookup.ksh \ diff --git a/tests/zfs-tests/tests/functional/casenorm/mixed_create_failure.ksh b/tests/zfs-tests/tests/functional/casenorm/mixed_create_failure.ksh deleted file mode 100755 index 51b5bb3f6..000000000 --- a/tests/zfs-tests/tests/functional/casenorm/mixed_create_failure.ksh +++ /dev/null @@ -1,136 +0,0 @@ -#!/bin/ksh -p -# -# -# This file and its contents are supplied under the terms of the -# Common Development and Distribution License ("CDDL"), version 1.0. -# You may only use this file in accordance with the terms of version -# 1.0 of the CDDL. -# -# A full copy of the text of the CDDL should have accompanied this -# source. A copy of the CDDL is also available via the Internet at -# http://www.illumos.org/license/CDDL. -# -# -# Copyright 2018 Nutanix Inc. All rights reserved. -# - -. $STF_SUITE/tests/functional/casenorm/casenorm.kshlib - -# DESCRIPTION: -# For the filesystem with casesensitivity=mixed, normalization=none, -# when multiple files with the same name (differing only in case) are created, -# the number of files is limited to what can fit in a fatzap leaf-block. -# And beyond that, it fails with ENOSPC. -# -# Ensure that the create/rename operations fail gracefully and not trigger an -# ASSERT. -# -# STRATEGY: -# Repeat the below steps for objects: files, directories, symlinks and hardlinks -# 1. Create objects with same name but varying in case. -# E.g. 'abcdefghijklmnop', 'Abcdefghijklmnop', 'ABcdefghijklmnop' etc. -# The create should fail with ENOSPC. -# 2. Create an object with name 'tmp_obj' and try to rename it to name that we -# failed to add in step 1 above. -# This should fail as well. - -verify_runnable "global" - -function cleanup -{ - destroy_testfs -} - -log_onexit cleanup -log_assert "With mixed mode: ensure create fails with ENOSPC beyond a certain limit" - -create_testfs "-o casesensitivity=mixed -o normalization=none" - -# Different object types -obj_type=('file' 'dir' 'symlink' 'hardlink') - -# Commands to create different object types -typeset -A ops -ops['file']='touch' -ops['dir']='mkdir' -ops['symlink']='ln -s' -ops['hardlink']='ln' - -# This function tests the following for a give object type : -# - Create multiple objects with the same name (varying only in case). -# Ensure that it eventually fails once the leaf-block limit is exceeded. -# - Create another object with a different name. And attempt rename it to the -# name (for which the create had failed in the previous step). -# This should fail as well. -# Args : -# $1 - object type (file/dir/symlink/hardlink) -# $2 - test directory -# -function test_ops -{ - typeset obj_type=$1 - typeset testdir=$2 - - target_obj='target-file' - - op="${ops[$obj_type]}" - - log_note "The op : $op" - log_note "testdir=$testdir obj_type=$obj_type" - - test_path="$testdir/$obj_type" - mkdir $test_path - log_note "Created test dir $test_path" - - if [[ $obj_type = "symlink" || $obj_type = "hardlink" ]]; then - touch $test_path/$target_obj - log_note "Created target: $test_path/$target_obj" - op="$op $test_path/$target_obj" - fi - - log_note "op : $op" - names='{a,A}{b,B}{c,C}{d,D}{e,E}{f,F}{g,G}{h,H}{i,I}{j,J}{k,K}{l,L}' - for name in $names; do - cmd="$op $test_path/$name" - out=$($cmd 2>&1) - ret=$? - log_note "cmd: $cmd ret: $ret out=$out" - if (($ret != 0)); then - if [[ $out = *@(No space left on device)* ]]; then - save_name="$test_path/$name" - break; - else - log_err "$cmd failed with unexpected error : $out" - fi - fi - done - - log_note 'Test rename \"sample_name\" rename' - TMP_OBJ="$test_path/tmp_obj" - cmd="$op $TMP_OBJ" - out=$($cmd 2>&1) - ret=$? - if (($ret != 0)); then - log_err "cmd:$cmd failed out:$out" - fi - - # Now, try to rename the tmp_obj to the name which we failed to add earlier. - # This should fail as well. - out=$(mv $TMP_OBJ $save_name 2>&1) - ret=$? - if (($ret != 0)); then - if [[ $out = *@(No space left on device)* ]]; then - log_note "$cmd failed as expected : $out" - else - log_err "$cmd failed with : $out" - fi - fi -} - -for obj_type in ${obj_type[*]}; -do - log_note "Testing create of $obj_type" - test_ops $obj_type $TESTDIR -done - -log_pass "Mixed mode FS: Ops on large number of colliding names fail gracefully" |