Whamcloud - gitweb
LU-11739 lod: don't inherit default layout from root directory
[fs/lustre-release.git] / lustre / tests / sanity.sh
index da48ab8..8a4dde1 100755 (executable)
@@ -6756,6 +6756,100 @@ test_65m() {
 }
 run_test 65m "normal user can't set filesystem default stripe"
 
+test_65n() {
+       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.12.50) ]] ||
+               skip "Need MDS version at least 2.12.50"
+       [[ $PARALLEL != "yes" ]] || skip "skip parallel run"
+
+       [[ $OSTCOUNT -ge 2 ]] || skip_env "needs >= 2 OSTs"
+       which getfattr > /dev/null 2>&1 || skip_env "no getfattr command"
+       which setfattr > /dev/null 2>&1 || skip_env "no setfattr command"
+
+       local root_layout=$(save_layout $MOUNT)
+       stack_trap "restore_layout $MOUNT $root_layout" EXIT
+
+       # new subdirectory under root directory should not inherit
+       # the default layout from root
+       local dir1=$MOUNT/$tdir-1
+       mkdir $dir1 || error "mkdir $dir1 failed"
+       ! getfattr -n trusted.lov $dir1 &> /dev/null ||
+               error "$dir1 shouldn't have LOV EA"
+
+       # delete the default layout on root directory
+       $LFS setstripe -d $MOUNT || error "delete root default layout failed"
+
+       local dir2=$MOUNT/$tdir-2
+       mkdir $dir2 || error "mkdir $dir2 failed"
+       ! getfattr -n trusted.lov $dir2 &> /dev/null ||
+               error "$dir2 shouldn't have LOV EA"
+
+       # set a new striping pattern on root directory
+       local def_stripe_size=$($LFS getstripe -S $MOUNT)
+       local new_def_stripe_size=$((def_stripe_size * 2))
+       $LFS setstripe -S $new_def_stripe_size $MOUNT ||
+               error "set stripe size on $MOUNT failed"
+
+       # new file created in $dir2 should inherit the new stripe size from
+       # the filesystem default
+       local file2=$dir2/$tfile-2
+       touch $file2 || error "touch $file2 failed"
+
+       local file2_stripe_size=$($LFS getstripe -S $file2)
+       [[ $file2_stripe_size -eq $new_def_stripe_size ]] ||
+               error "$file2 didn't inherit stripe size $new_def_stripe_size"
+
+       local dir3=$MOUNT/$tdir-3
+       mkdir $dir3 || error "mkdir $dir3 failed"
+       ! getfattr -n trusted.lov $dir3 &> /dev/null ||
+               error "$dir3 shouldn't have LOV EA"
+
+       # set OST pool on root directory
+       local pool=$TESTNAME
+       pool_add $pool || error "add $pool failed"
+       pool_add_targets $pool 0 $((OSTCOUNT - 1)) 1 ||
+               error "add targets to $pool failed"
+
+       $LFS setstripe -p $pool $MOUNT ||
+               error "set OST pool on $MOUNT failed"
+
+       # new file created in $dir3 should inherit the pool from
+       # the filesystem default
+       local file3=$dir3/$tfile-3
+       touch $file3 || error "touch $file3 failed"
+
+       local file3_pool=$($LFS getstripe -p $file3)
+       [[ "$file3_pool" = "$pool" ]] ||
+               error "$file3 didn't inherit OST pool $pool"
+
+       local dir4=$MOUNT/$tdir-4
+       mkdir $dir4 || error "mkdir $dir4 failed"
+       ! getfattr -n trusted.lov $dir4 &> /dev/null ||
+               error "$dir4 shouldn't have LOV EA"
+
+       # new file created in $dir4 should inherit the pool from
+       # the filesystem default
+       local file4=$dir4/$tfile-4
+       touch $file4 || error "touch $file4 failed"
+
+       local file4_pool=$($LFS getstripe -p $file4)
+       [[ "$file4_pool" = "$pool" ]] ||
+               error "$file4 didn't inherit OST pool $pool"
+
+       # new subdirectory under non-root directory should inherit
+       # the default layout from its parent directory
+       $LFS setstripe -S $new_def_stripe_size -p $pool $dir4 ||
+               error "set directory layout on $dir4 failed"
+
+       local dir5=$dir4/$tdir-5
+       mkdir $dir5 || error "mkdir $dir5 failed"
+
+       local dir4_layout=$(get_layout_param $dir4)
+       local dir5_layout=$(get_layout_param $dir5)
+       [[ "$dir4_layout" = "$dir5_layout" ]] ||
+               error "$dir5 should inherit the default layout from $dir4"
+}
+run_test 65n "don't inherit default layout from root for new subdirectories"
+
 # bug 2543 - update blocks count on client
 test_66() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"