Whamcloud - gitweb
LU-988 clio: use OSC object's m/a/ctime when build write RPC
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 0a667b7..36e2aa0 100644 (file)
@@ -16,12 +16,6 @@ CPU=`awk '/model/ {print $4}' /proc/cpuinfo`
 #                                    buffer i/o errs             sock spc runas
 [ "$CPU" = "UML" ] && EXCEPT="$EXCEPT 27m 27n 27o 27p 27q 27r 31d 54a  64b 99a 99b 99c 99d 99e 99f 101a"
 
-case `uname -r` in
-2.4*) FSTYPE=${FSTYPE:-ext3} ;;
-2.6*) FSTYPE=${FSTYPE:-ldiskfs} ;;
-*) error "unsupported kernel" ;;
-esac
-
 SRCDIR=$(cd $(dirname $0); echo $PWD)
 export PATH=$PATH:/sbin
 
@@ -1357,9 +1351,6 @@ check_seq_oid()
         # compare lmm_object_id and lu_fid->oid
         [ $lmm_oid = ${fid[2]} ] || { error "OID mismatch"; return 2; }
 
-        [ "$FSTYPE" != "ldiskfs" ] &&
-                skip "cannot check filter fid FSTYPE=$FSTYPE" && return 0
-
         # check the trusted.fid attribute of the OST objects of the file
         local have_obdidx=false
         local stripe_nr=0
@@ -1372,6 +1363,11 @@ check_seq_oid()
                 local ost=$((obdidx + 1))
                 local dev=$(ostdevname $ost)
 
+               if [ $(facet_fstype ost$ost) != ldiskfs ]; then
+                       echo "Currently only works with ldiskfs-based OSTs"
+                       continue
+               fi
+
                 log "want: stripe:$stripe_nr ost:$obdidx oid:$oid/$hex seq:$seq"
 
                 #don't unmount/remount the OSTs if we don't need to do that
@@ -2426,12 +2422,14 @@ test_39i() {
 run_test 39i "write, rename, stat =============================="
 
 test_39j() {
-       debugsave
-       lctl set_param debug=-1
+       start_full_debug_logging
        touch $DIR1/$tfile
        sleep 1
 
-       multiop_bg_pause $DIR1/$tfile oO_RDWR:w2097152_c || error "multiop failed"
+       #define OBD_FAIL_OSC_DELAY_SETTIME       0x412
+       lctl set_param fail_loc=0x80000412
+       multiop_bg_pause $DIR1/$tfile oO_RDWR:w2097152_c ||
+               error "multiop failed"
        local multipid=$!
        local mtime1=`stat -c %Y $DIR1/$tfile`
 
@@ -2442,13 +2440,15 @@ test_39j() {
 
        for (( i=0; i < 2; i++ )) ; do
                local mtime2=`stat -c %Y $DIR1/$tfile-1`
-               [ "$mtime1" = "$mtime2" ] || \
-                       error "mtime is lost on close: $mtime2, should be $mtime1"
+               [ "$mtime1" = "$mtime2" ] ||
+                       error "mtime is lost on close: $mtime2, " \
+                             "should be $mtime1"
 
                cancel_lru_locks osc
                if [ $i = 0 ] ; then echo "repeat after cancel_lru_locks"; fi
        done
-       debugrestore
+       lctl set_param fail_loc=0
+       stop_full_debug_logging
 }
 run_test 39j "write, rename, close, stat ======================="
 
@@ -3032,6 +3032,30 @@ test_48e() { # bug 4134
 }
 run_test 48e "Access to recreated parent subdir (should return errors)"
 
+test_49() { # LU-1030
+       # get ost1 size - lustre-OST0000
+       ost1_size=$(do_facet ost1 lfs df |grep ${ost1_svc} |awk '{print $4}')
+       # write 800M at maximum
+       [ $ost1_size -gt 819200 ] && ost1_size=819200
+
+       lfs setstripe -c 1 -i 0 $DIR/$tfile
+       dd if=/dev/zero of=$DIR/$tfile bs=4k count=$((ost1_size >> 2)) &
+       local dd_pid=$!
+
+       # change max_pages_per_rpc while writing the file
+       local osc1_mppc=osc.$(get_osc_import_name client ost1).max_pages_per_rpc
+       local orig_mppc=`$LCTL get_param -n $osc1_mppc`
+       # loop until dd process exits
+       while ps ax -opid | grep -q $dd_pid; do
+               $LCTL set_param $osc1_mppc=$((RANDOM % 256 + 1))
+               sleep $((RANDOM % 5 + 1))
+       done
+       # restore original max_pages_per_rpc
+       $LCTL set_param $osc1_mppc=$orig_mppc
+       rm $DIR/$tfile || error "rm $DIR/$tfile failed"
+}
+run_test 49 "Change max_pages_per_rpc won't break osc extent"
+
 test_50() {
        # bug 1485
        mkdir $DIR/d50
@@ -4697,7 +4721,7 @@ test_77i() { # bug 13805
        for VALUE in `lctl get_param osc.*osc-[^mM]*.checksum_type`; do
                PARAM=`echo ${VALUE[0]} | cut -d "=" -f1`
                algo=`lctl get_param -n $PARAM | sed 's/.*\[\(.*\)\].*/\1/g'`
-               [ "$algo" = "crc32" ] || error "algo set to $algo instead of crc32"
+               [ "$algo" = "adler" ] || error "algo set to $algo instead of adler"
        done
        remount_client $MOUNT
 }
@@ -6915,7 +6939,10 @@ set_dir_limits () {
        done
 }
 test_129() {
-       [ "$FSTYPE" != "ldiskfs" ] && skip "not needed for FSTYPE=$FSTYPE" && return 0
+       if [ "$(facet_type_fstype MDS)" != ldiskfs ]; then
+               skip "Only applicable to ldiskfs-based MDTs"
+               return
+       fi
        remote_mds_nodsh && skip "remote MDS with nodsh" && return
 
        EFBIG=27