Whamcloud - gitweb
LU-10401 tests: fix error from 'tr -d='
[fs/lustre-release.git] / lustre / tests / sanity.sh
index a073da0..b73c826 100755 (executable)
@@ -1635,6 +1635,28 @@ test_27ce() {
 }
 run_test 27ce "more stripes than OSTs with -o"
 
+test_27cf() {
+       local osp_proc="osp.$FSNAME-OST0000-osc-MDT000*.active"
+       local pid=0
+
+       test_mkdir -p $DIR/$tdir || error "failed to mkdir $DIR/$tdir"
+       do_facet $SINGLEMDS "$LCTL set_param -n $osp_proc=0"
+       stack_trap "do_facet $SINGLEMDS $LCTL set_param -n $osp_proc=1" EXIT
+       wait_update_facet $SINGLEMDS "$LCTL get_param -n $osp_proc | grep 1" ||
+               error "failed to set $osp_proc=0"
+
+       $LFS setstripe -o 0 $DIR/$tdir/$tfile &
+       pid=$!
+       sleep 1
+       do_facet $SINGLEMDS "$LCTL set_param -n $osp_proc=1"
+       wait_update_facet $SINGLEMDS "$LCTL get_param -n $osp_proc | grep 0" ||
+               error "failed to set $osp_proc=1"
+       wait $pid
+       [[ $pid -ne 0 ]] ||
+               error "should return error due to $osp_proc=0"
+}
+run_test 27cf "'setstripe -o' on inactive OSTs should return error"
+
 test_27d() {
        test_mkdir $DIR/$tdir
        $LFS setstripe -c 0 -i -1 -S 0 $DIR/$tdir/$tfile ||
@@ -4508,6 +4530,49 @@ test_39p() {
 }
 run_test 39p "remote directory cached attributes updated after create ========"
 
+test_39r() {
+       [ $OST1_VERSION -ge $(version_code 2.13.52) ] ||
+               skip "no atime update on old OST"
+       if [ "$ost1_FSTYPE" != ldiskfs ]; then
+               skip_env "ldiskfs only test"
+       fi
+
+       local saved_adiff
+       saved_adiff=$(do_facet ost1 \
+               lctl get_param -n obdfilter.*OST0000.atime_diff)
+       stack_trap "do_facet ost1 \
+               lctl set_param obdfilter.*.atime_diff=$saved_adiff"
+
+       do_facet ost1 "lctl set_param obdfilter.*.atime_diff=5"
+
+       $LFS setstripe -i 0 $DIR/$tfile
+       dd if=/dev/zero of=$DIR/$tfile bs=4k count=1 ||
+               error "can't write initial file"
+       cancel_lru_locks osc
+
+       # exceed atime_diff and access file
+       sleep 6
+       dd if=$DIR/$tfile of=/dev/null || error "can't udpate atime"
+
+       local atime_cli=$(stat -c %X $DIR/$tfile)
+       echo "client atime: $atime_cli"
+       # allow atime update to be written to device
+       do_facet ost1 "$LCTL set_param -n osd*.*OST*.force_sync 1"
+       sleep 5
+
+       local ostdev=$(ostdevname 1)
+       local fid=($(lfs getstripe -y $DIR/$tfile |
+                       awk '/l_fid:/ { print $2 }' | tr ':' ' '))
+       local objpath="O/0/d$((${fid[1]} % 32))/$((${fid[1]}))"
+       local cmd="debugfs -c -R \\\"stat $objpath\\\" $ostdev"
+
+       echo "OST atime: $(do_facet ost1 "$cmd" |& grep atime)"
+       local atime_ost=$(do_facet ost1 "$cmd" |&
+                         awk -F'[: ]' '/atime:/ { print $4 }')
+       (( atime_cli == atime_ost )) ||
+               error "atime on client $atime_cli != ost $atime_ost"
+}
+run_test 39r "lazy atime update on OST"
 
 test_39q() { # LU-8041
        local testdir=$DIR/$tdir
@@ -6129,6 +6194,26 @@ test_56ra() {
 }
 run_test 56ra "check lfs find -size -lazy works for data on OSTs"
 
+test_56rb() {
+       local dir=$DIR/$tdir
+       local tmp=$TMP/$tfile.log
+       local mdt_idx;
+
+       test_mkdir -p $dir || error "failed to mkdir $dir"
+       $LFS setstripe -c 1 -i 0 $dir/$tfile ||
+               error "failed to setstripe $dir/$tfile"
+       dd if=/dev/zero of=$dir/$tfile bs=1M count=1
+
+       stack_trap "rm -f $tmp" EXIT
+       $LFS find --size +100K --ost 0 $dir 2>&1 | tee $tmp
+       [ -z "$(cat $tmp | grep "obd_uuid: ")" ] ||
+               error "failed to find --size +100K --ost 0 $dir"
+       $LFS find --size +100K --mdt $mdt_idx $dir 2>&1 | tee $tmp
+       [ -z "$(cat $tmp | grep "obd_uuid: ")" ] ||
+               error "failed to find --size +100K --mdt $mdt_idx $dir"
+}
+run_test 56rb "check lfs find --size --ost/--mdt works"
+
 test_56s() { # LU-611 #LU-9369
        [[ $OSTCOUNT -lt 2 ]] && skip_env "need at least 2 OSTs"
 
@@ -9056,7 +9141,7 @@ test_101d() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
        local file=$DIR/$tfile
-       local sz_MB=${FILESIZE_101d:-500}
+       local sz_MB=${FILESIZE_101d:-80}
        local ra_MB=${READAHEAD_MB:-40}
 
        local free_MB=$(($(df -P $DIR | tail -n 1 | awk '{ print $4 }') / 1024))
@@ -9077,7 +9162,8 @@ test_101d() {
        $LCTL get_param -n llite.*.max_read_ahead_mb
 
        echo Reading the test file $file with read-ahead disabled
-       local raOFF=$(do_and_time "dd if=$file of=/dev/null bs=1M count=$sz_MB")
+       local sz_KB=$((sz_MB * 1024 / 4))
+       local raOFF=$(do_and_time "dd if=$file of=/dev/null bs=4k count=$sz_KB")
 
        echo Cancel LRU locks on lustre client to flush the client cache
        cancel_lru_locks osc
@@ -9085,10 +9171,10 @@ test_101d() {
        $LCTL set_param -n llite.*.max_read_ahead_mb=$ra_MB
 
        echo Reading the test file $file with read-ahead enabled
-       local raON=$(do_and_time "dd if=$file of=/dev/null bs=1M count=$sz_MB")
+       local raON=$(do_and_time "dd if=$file of=/dev/null bs=4k count=$sz_KB")
 
        echo "read-ahead disabled time read $raOFF"
-       echo "read-ahead enabled  time read $raON"
+       echo "read-ahead enabled time read $raON"
 
        rm -f $file
        wait_delete_completed
@@ -9273,6 +9359,58 @@ test_101h() {
 }
 run_test 101h "Readahead should cover current read window"
 
+test_101i() {
+       dd if=/dev/zero of=$DIR/$tfile bs=1M count=10 ||
+               error "dd 10M file failed"
+
+       local max_per_file_mb=$($LCTL get_param -n \
+               llite.*.max_read_ahead_per_file_mb 2>/dev/null)
+       cancel_lru_locks osc
+       stack_trap "$LCTL set_param llite.*.max_read_ahead_per_file_mb=$max_per_file_mb"
+       $LCTL set_param llite.*.max_read_ahead_per_file_mb=1 ||
+               error "set max_read_ahead_per_file_mb to 1 failed"
+
+       echo "Reset readahead stats"
+       $LCTL set_param llite.*.read_ahead_stats=0
+
+       dd if=$DIR/$tfile of=/dev/null bs=2M
+
+       $LCTL get_param llite.*.read_ahead_stats
+       local miss=$($LCTL get_param -n llite.*.read_ahead_stats |
+                    awk '/misses/ { print $2 }')
+       [ $miss -eq 5 ] || error "expected misses 5 but got $miss"
+       rm -f $DIR/$tfile
+}
+run_test 101i "allow current readahead to exceed reservation"
+
+test_101j() {
+       $LFS setstripe -i 0 -c 1 $DIR/$tfile ||
+               error "setstripe $DIR/$tfile failed"
+       local file_size=$((1048576 * 16))
+       local old_ra=$($LCTL get_param -n llite.*.max_read_ahead_mb | head -n 1)
+       stack_trap "$LCTL set_param -n llite.*.max_read_ahead_mb $old_ra" EXIT
+
+       echo Disable read-ahead
+       $LCTL set_param -n llite.*.max_read_ahead_mb=0
+
+       dd if=/dev/zero of=$DIR/$tfile bs=1M count=$(($file_size / 1048576))
+       for blk in $PAGE_SIZE 1048576 $file_size; do
+               cancel_lru_locks osc
+               echo "Reset readahead stats"
+               $LCTL set_param -n llite.*.read_ahead_stats=0
+               local count=$(($file_size / $blk))
+               dd if=$DIR/$tfile bs=$blk count=$count of=/dev/null
+               local miss=$($LCTL get_param -n llite.*.read_ahead_stats |
+                            get_named_value 'failed to fast read' |
+                            cut -d" " -f1 | calc_total)
+               $LCTL get_param -n llite.*.read_ahead_stats
+               [ $miss -eq $count ] || error "expected $count got $miss"
+       done
+
+       rm -f $p $DIR/$tfile
+}
+run_test 101j "A complete read block should be submitted when no RA"
+
 setup_test102() {
        test_mkdir $DIR/$tdir
        chown $RUNAS_ID $DIR/$tdir
@@ -12621,7 +12759,7 @@ test_133g() {
                fi
                if [ $facet_ver -ge $(version_code 2.5.54) ]; then
                        do_facet $facet "$LCTL list_param -R '*' | grep '=' |
-                               tr -d= | egrep -v 'force_lbug|changelog_mask' |
+                               tr -d = | egrep -v 'force_lbug|changelog_mask' |
                                xargs badarea_io" ||
                                        error_133 "$facet badarea_io failed"
                else
@@ -16978,7 +17116,7 @@ test_230d() {
        old_count=$((MDSCOUNT - old_index))
        new_index=$((RANDOM % MDSCOUNT))
        new_count=$((MDSCOUNT - new_index))
-       new_hash="all_char"
+       new_hash=1 # for all_char
 
        [ $old_count -gt 1 ] && old_count=$((old_count - RANDOM % old_count))
        [ $new_count -gt 1 ] && new_count=$((new_count - RANDOM % new_count))
@@ -17302,6 +17440,21 @@ test_230m() {
 }
 run_test 230m "xattrs not changed after dir migration"
 
+test_230n() {
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+       [[ $MDS1_VERSION -ge $(version_code 2.13.53) ]] ||
+               skip "Need MDS version at least 2.13.53"
+
+       $LFS mkdir -i 0 $DIR/$tdir || error "mkdir $tdir failed"
+       cat /etc/hosts > $DIR/$tdir/$tfile
+       $LFS mirror extend -N1 $DIR/$tdir/$tfile || error "Mirroring failed"
+       $LFS migrate -m 1 $DIR/$tdir || error "Migration failed"
+
+       cmp /etc/hosts $DIR/$tdir/$tfile ||
+               error "File data mismatch after migration"
+}
+run_test 230n "Dir migration with mirrored file"
+
 test_231a()
 {
        # For simplicity this test assumes that max_pages_per_rpc
@@ -22745,7 +22898,7 @@ test_807() {
                error "truncate $tdir/trunc failed"
 
        local bs=1048576
-       dd if=/dev/zero of=$DIR/$tdir/single_dd bs=$bs count=1 ||
+       dd if=/dev/zero of=$DIR/$tdir/single_dd bs=$bs count=1 conv=fsync ||
                error "write $tfile failed"
 
        # multi-client wirtes
@@ -22766,7 +22919,8 @@ test_807() {
                wait ${pids[$i]}
        done
 
-       sleep 5
+       do_rpc_nodes "$CLIENTS" cancel_lru_locks osc
+       do_nodes "$CLIENTS" "sync ; sleep 5 ; sync"
        $LSOM_SYNC -u $cl_user -m $FSNAME-MDT0000 $MOUNT
        check_lsom_data $DIR/$tdir/trunc
        check_lsom_data $DIR/$tdir/single_dd
@@ -22866,22 +23020,6 @@ test_810() {
 }
 run_test 810 "partial page writes on ZFS (LU-11663)"
 
-test_811() {
-       [ $MDS1_VERSION -lt $(version_code 2.11.56) ] &&
-               skip "Need MDS version at least 2.11.56"
-
-       #define OBD_FAIL_MDS_ORPHAN_DELETE      0x165
-       do_facet mds1 $LCTL set_param fail_loc=0x165
-       $MULTIOP $DIR/$tfile Ouc || error "multiop failed"
-
-       stop mds1
-       start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS
-
-       wait_update_facet mds1 "pgrep orph_.*-MDD | wc -l" "0" ||
-               error "MDD orphan cleanup thread not quit"
-}
-run_test 811 "orphan name stub can be cleaned up in startup"
-
 test_812a() {
        [ $OST1_VERSION -lt $(version_code 2.12.51) ] &&
                skip "OST < 2.12.51 doesn't support this fail_loc"