Whamcloud - gitweb
LU-13693 lfs: avoid opening regular files for getstripe
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 1e10a42..414d95e 100755 (executable)
@@ -6796,6 +6796,24 @@ test_56wd() {
 }
 run_test 56wd "check lfs_migrate --rsync and --no-rsync work"
 
+test_56we() {
+       local td=$DIR/$tdir
+       local tf=$td/$tfile
+
+       test_mkdir $td || error "cannot create $td"
+       touch $tf || error "cannot touch $tf"
+
+       echo -n "Make sure --non-direct|-D works..."
+       $LFS_MIGRATE -y --non-direct -v $tf 2>&1 |
+               grep -q "lfs migrate --non-direct" ||
+               error "--non-direct option cannot work correctly"
+       $LFS_MIGRATE -y -D -v $tf 2>&1 |
+               grep -q "lfs migrate -D" ||
+               error "-D option cannot work correctly"
+       echo "done."
+}
+run_test 56we "check lfs_migrate --non-direct|-D support"
+
 test_56x() {
        [[ $OSTCOUNT -lt 2 ]] && skip_env "needs >= 2 OSTs"
        check_swap_layouts_support
@@ -16335,16 +16353,20 @@ test_205a() { # Job stats
 }
 run_test 205a "Verify job stats"
 
-# LU-13117
+# LU-13117, LU-13597
 test_205b() {
+       job_stats="mdt.*.job_stats"
+       $LCTL set_param $job_stats=clear
        $LCTL set_param jobid_var=USER jobid_name="%e.%u"
        env -i USERTESTJOBSTATS=foolish touch $DIR/$tfile.1
-       do_facet $SINGLEMDS $LCTL get_param mdt.*.job_stats |
-               grep job_id: | grep foolish &&
+       do_facet $SINGLEMDS $LCTL get_param $job_stats |
+               grep "job_id:.*foolish" &&
                        error "Unexpected jobid found"
-       true
+       do_facet $SINGLEMDS $LCTL get_param $job_stats |
+               grep "open:.*min.*max.*sum" ||
+                       error "wrong job_stats format found"
 }
-run_test 205b "Verify job stats jobid parsing"
+run_test 205b "Verify job stats jobid and output format"
 
 # LU-1480, LU-1773 and LU-1657
 test_206() {
@@ -16469,6 +16491,27 @@ test_209() {
 }
 run_test 209 "read-only open/close requests should be freed promptly"
 
+test_210() {
+       local pid
+
+       $MULTIOP $DIR/$tfile oO_CREAT:O_RDWR:eW_E+eUc &
+       pid=$!
+       sleep 1
+
+       $LFS getstripe $DIR/$tfile
+       kill -USR1 $pid
+       wait $pid || error "multiop failed"
+
+       $MULTIOP $DIR/$tfile oO_RDONLY:eR_E+eUc &
+       pid=$!
+       sleep 1
+
+       $LFS getstripe $DIR/$tfile
+       kill -USR1 $pid
+       wait $pid || error "multiop failed"
+}
+run_test 210 "lfs getstripe does not break leases"
+
 test_212() {
        size=`date +%s`
        size=$((size % 8192 + 1))
@@ -19773,6 +19816,36 @@ test_270g() {
 }
 run_test 270g "DoM: default DoM stripe size depends on free space"
 
+test_270h() {
+       [[ $MDS1_VERSION -ge $(version_code 2.13.53) ]] ||
+               skip "Need MDS version at least 2.13.53"
+
+       local mdtname=${FSNAME}-MDT0000-mdtlov
+       local dom=$DIR/$tdir/$tfile
+       local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
+
+       save_lustre_params mds1 "lod.*.dom_stripesize" > $save
+       stack_trap "restore_lustre_params < $save; rm -f $save" EXIT
+
+       $LFS mkdir -i 0 -c 1 $DIR/$tdir
+       $LFS setstripe -E 1M -c1  -E -1 -c2 ${dom}_1 ||
+               error "can't create OST file"
+       # mirrored file with DOM entry in the second mirror
+       $LFS mirror extend -N -E 1M -L mdt -E eof -c2 ${dom}_1 ||
+               error "can't create mirror with DoM component"
+
+       do_facet mds1 $LCTL set_param -n lod.$mdtname.dom_stripesize=0
+
+       # DOM component in the middle and has other enries in the same mirror,
+       # should succeed but lost DoM component
+       $LFS setstripe --copy=${dom}_1 $dom ||
+               error "Can't create file from OST|DOM mirror layout"
+       # check new file has no DoM layout after all
+       [[ $($LFS getstripe -L $dom) != "mdt" ]] ||
+               error "File has DoM component while DoM is disabled"
+}
+run_test 270h "DoM: DoM stripe removal when disabled on server"
+
 test_271a() {
        [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"