2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2020 SUSE Linux Products GmbH. All Rights Reserved.
7 # Test subdirectory limit of ext4.
8 # We create more than 65000 subdirectories on the ext4 filesystem.
11 seqres=$RESULT_DIR/$seq
12 echo "QA output created by $seq"
16 status=1 # failure is the default!
17 trap "_cleanup; exit \$status" 0 1 2 3 15
28 # get standard environment, filters and checks
32 # remove previous $seqres.full before test
35 # real QA test starts here
40 _require_test_program "t_create_short_dirs"
41 _require_test_program "t_create_long_dirs"
42 _require_dumpe2fs "$DUMPE2FS_PROG" dumpe2fs
44 echo "Silence is golden"
47 # $1: Number of directories to create
48 # $2: create short dir or long dir
49 # $3: parent directory
53 if [ $2 -eq $SHORT_DIR ]; then
54 dir_name_len="short name"
56 dir_name_len="long name"
59 echo "Num of dirs to create: $1, Dir name len: $dir_name_len, " \
60 "Parent dir: $3" >> $seqres.full
62 _scratch_mkfs "-O extent,dir_nlink,dir_index -I 256" >> $seqres.full 2>&1
66 mkdir -p $3 2> /dev/null
68 if [ $2 -eq $SHORT_DIR ]; then
69 $here/src/t_create_short_dirs $1 $3
71 $here/src/t_create_long_dirs $1 $3
75 nr_dirs=`ls $3 | wc -l`
76 echo "Failed to create directories - $nr_dirs"
85 echo "Failed to remove directories in $3"
93 # check dir_nlink is set
94 $DUMPE2FS_PROG -h $SCRATCH_DEV 2>> $seqres.full | grep '^Filesystem features' | grep -q dir_nlink
96 echo "Feature dir_nlink is not set, please check $seqres.full for detail"
103 DIR_LEN=( $SHORT_DIR $LONG_DIR )
104 PARENT_DIR="$SCRATCH_MNT/subdir"
106 for ((i = 0; i < 2; i++)); do
107 workout $DIR_NUM ${DIR_LEN[$i]} $PARENT_DIR