Whamcloud - gitweb
LU-3267 utils: missing setting echo seq for getattr/setattr
[fs/lustre-release.git] / lustre / tests / sanity.sh
index c70826e..2244d5a 100644 (file)
@@ -139,105 +139,82 @@ echo # add a newline after mke2fs.
 
 umask 077
 
-OLDDEBUG="`lctl get_param -n debug 2> /dev/null`"
+OLDDEBUG=$(lctl get_param -n debug 2> /dev/null)
 lctl set_param debug=-1 2> /dev/null || true
 test_0() {
        touch $DIR/$tfile
-       $CHECKSTAT -t file $DIR/$tfile || error
+       $CHECKSTAT -t file $DIR/$tfile || error "$tfile is not a file"
        rm $DIR/$tfile
-       $CHECKSTAT -a $DIR/$tfile || error
+       $CHECKSTAT -a $DIR/$tfile || error "$tfile was not removed"
 }
 run_test 0 "touch .../$tfile ; rm .../$tfile ====================="
 
 test_0b() {
-       chmod 0755 $DIR || error
-       $CHECKSTAT -p 0755 $DIR || error
+       chmod 0755 $DIR || error "chmod 0755 $DIR failed"
+       $CHECKSTAT -p 0755 $DIR || error "$DIR permission is not 0755"
 }
 run_test 0b "chmod 0755 $DIR ============================="
 
 test_0c() {
-    $LCTL get_param mdc.*.import | grep  "state: FULL" || error "import not FULL"
-    $LCTL get_param mdc.*.import | grep  "target: $FSNAME-MDT" || error "bad target"
+       $LCTL get_param mdc.*.import | grep "state: FULL" ||
+               error "import not FULL"
+       $LCTL get_param mdc.*.import | grep "target: $FSNAME-MDT" ||
+               error "bad target"
 }
 run_test 0c "check import proc ============================="
 
-test_1a() {
-       test_mkdir -p $DIR/$tdir
-       test_mkdir -p $DIR/$tdir/d2
+test_1() {
+       test_mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
+       test_mkdir -p $DIR/$tdir/d2 || error "mkdir $tdir/d2 failed"
        test_mkdir $DIR/$tdir/d2 && error "we expect EEXIST, but not returned"
-       $CHECKSTAT -t dir $DIR/$tdir/d2 || error
-}
-run_test 1a "mkdir .../d1; mkdir .../d1/d2 ====================="
-
-test_1b() {
+       $CHECKSTAT -t dir $DIR/$tdir/d2 || error "$tdir/d2 is not a dir"
        rmdir $DIR/$tdir/d2
        rmdir $DIR/$tdir
-       $CHECKSTAT -a $DIR/$tdir || error
-}
-run_test 1b "rmdir .../d1/d2; rmdir .../d1 ====================="
-
-test_2a() {
-       test_mkdir $DIR/$tdir
-       touch $DIR/$tdir/$tfile
-       $CHECKSTAT -t file $DIR/$tdir/$tfile || error
+       $CHECKSTAT -a $DIR/$tdir || error "$tdir was not removed"
 }
-run_test 2a "mkdir .../d2; touch .../d2/f ======================"
+run_test 1 "mkdir; remkdir; rmdir =============================="
 
-test_2b() {
+test_2() {
+       test_mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
+       touch $DIR/$tdir/$tfile || error "touch $tdir/$tfile failed"
+       $CHECKSTAT -t file $DIR/$tdir/$tfile || error "$tdir/$tfile not a file"
        rm -r $DIR/$tdir
-       $CHECKSTAT -a $DIR/$tdir || error
-}
-run_test 2b "rm -r .../d2; checkstat .../d2/f ======================"
-
-test_3a() {
-       test_mkdir -p $DIR/$tdir
-       $CHECKSTAT -t dir $DIR/$tdir || error
+       $CHECKSTAT -a $DIR/$tdir/$tfile || error "$tdir/$file is not removed"
 }
-run_test 3a "mkdir .../d3 ======================================"
+run_test 2 "mkdir; touch; rmdir; check file ===================="
 
-test_3b() {
-       if [ ! -d $DIR/$tdir ]; then
-               mkdir $DIR/$tdir
-       fi
+test_3() {
+       test_mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
+       $CHECKSTAT -t dir $DIR/$tdir || error "$tdir is not a directory"
        touch $DIR/$tdir/$tfile
-       $CHECKSTAT -t file $DIR/$tdir/$tfile || error
-}
-run_test 3b "touch .../d3/f ===================================="
-
-test_3c() {
+       $CHECKSTAT -t file $DIR/$tdir/$tfile || error "$tdir/$tfile not a file"
        rm -r $DIR/$tdir
-       $CHECKSTAT -a $DIR/$tdir || error
+       $CHECKSTAT -a $DIR/$tdir || error "$tdir is not removed"
 }
-run_test 3c "rm -r .../d3 ======================================"
+run_test 3 "mkdir; touch; rmdir; check dir ====================="
 
-test_4a() {
-       test_mkdir -p $DIR/$tdir
-       $CHECKSTAT -t dir $DIR/$tdir || error
+test_4() {
+       test_mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
+       $CHECKSTAT -t dir $DIR/$tdir || error "$tdir is not a directory"
+       test_mkdir $DIR/$tdir/d2 || error "mkdir $tdir/d2 failed"
+       $CHECKSTAT -t dir $DIR/$tdir/d2 || error "$tdir/d2 is not a directory"
 }
-run_test 4a "mkdir .../d4 ======================================"
-
-test_4b() {
-       if [ ! -d $DIR/$tdir ]; then
-               test_mkdir $DIR/$tdir
-       fi
-       test_mkdir $DIR/$tdir/d2
-       mkdir $DIR/$tdir/d2
-       $CHECKSTAT -t dir $DIR/$tdir/d2 || error
-}
-run_test 4b "mkdir .../d4/d2 ==================================="
+run_test 4 "mkdir =============================================="
 
 test_5() {
-       test_mkdir $DIR/$tdir
-       test_mkdir $DIR/$tdir/d2
-       chmod 0707 $DIR/$tdir/d2
-       $CHECKSTAT -t dir -p 0707 $DIR/$tdir/d2 || error
+       test_mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
+       test_mkdir $DIR/$tdir/d2 || error "mkdir $tdir/d2 failed"
+       chmod 0707 $DIR/$tdir/d2 || error "chmod 0707 $tdir/d2 failed"
+       $CHECKSTAT -t dir -p 0707 $DIR/$tdir/d2 || error "$tdir/d2 not mode 707"
+       $CHECKSTAT -t dir $DIR/$tdir/d2 || error "$tdir/d2 is not a directory"
 }
 run_test 5 "mkdir .../d5 .../d5/d2; chmod .../d5/d2 ============"
 
 test_6a() {
-       touch $DIR/$tfile
-       chmod 0666 $DIR/$tfile || error
-       $CHECKSTAT -t file -p 0666 -u \#$UID $DIR/$tfile || error
+       touch $DIR/$tfile || error "touch $DIR/$tfile failed"
+       chmod 0666 $DIR/$tfile || error "chmod 0666 $tfile failed"
+       $CHECKSTAT -t file -p 0666 -u \#$UID $DIR/$tfile ||
+               error "$tfile does not have perm 0666 or UID $UID"
 }
 run_test 6a "touch .../f6a; chmod .../f6a ======================"
 
@@ -247,16 +224,18 @@ test_6b() {
                touch $DIR/$tfile
                chmod 0666 $DIR/$tfile
        fi
-       $RUNAS chmod 0444 $DIR/$tfile && error
-       $CHECKSTAT -t file -p 0666 -u \#$UID $DIR/$tfile || error
+       $RUNAS chmod 0444 $DIR/$tfile && error "chmod $tfile worked on UID $UID"
+       $CHECKSTAT -t file -p 0666 -u \#$UID $DIR/$tfile ||
+               error "$tfile should be 0666 and owned by UID $UID"
 }
 run_test 6b "$RUNAS chmod .../f6a (should return error) =="
 
 test_6c() {
        [ $RUNAS_ID -eq $UID ] && skip_env "RUNAS_ID = UID = $UID" && return
        touch $DIR/$tfile
-       chown $RUNAS_ID $DIR/$tfile || error
-       $CHECKSTAT -t file -u \#$RUNAS_ID $DIR/$tfile || error
+       chown $RUNAS_ID $DIR/$tfile || error "chown $RUNAS_ID $file failed"
+       $CHECKSTAT -t file -u \#$RUNAS_ID $DIR/$tfile ||
+               error "$tfile should be owned by UID $RUNAS_ID"
 }
 run_test 6c "touch .../f6c; chown .../f6c ======================"
 
@@ -266,16 +245,18 @@ test_6d() {
                touch $DIR/$tfile
                chown $RUNAS_ID $DIR/$tfile
        fi
-       $RUNAS chown $UID $DIR/$tfile && error
-       $CHECKSTAT -t file -u \#$RUNAS_ID $DIR/$tfile || error
+       $RUNAS chown $UID $DIR/$tfile && error "chown $UID $file succeeded"
+       $CHECKSTAT -t file -u \#$RUNAS_ID $DIR/$tfile ||
+               error "$tfile should be owned by UID $RUNAS_ID"
 }
 run_test 6d "$RUNAS chown .../f6c (should return error) =="
 
 test_6e() {
        [ $RUNAS_ID -eq $UID ] && skip_env "RUNAS_ID = UID = $UID" && return
        touch $DIR/$tfile
-       chgrp $RUNAS_ID $DIR/$tfile || error
-       $CHECKSTAT -t file -u \#$UID -g \#$RUNAS_ID $DIR/$tfile || error
+       chgrp $RUNAS_ID $DIR/$tfile || error "chgrp $RUNAS_ID $file failed"
+       $CHECKSTAT -t file -u \#$UID -g \#$RUNAS_ID $DIR/$tfile ||
+               error "$tfile should be owned by GID $UID"
 }
 run_test 6e "touch .../f6e; chgrp .../f6e ======================"
 
@@ -285,19 +266,21 @@ test_6f() {
                touch $DIR/$tfile
                chgrp $RUNAS_ID $DIR/$tfile
        fi
-       $RUNAS chgrp $UID $DIR/$tfile && error
-       $CHECKSTAT -t file -u \#$UID -g \#$RUNAS_ID $DIR/$tfile || error
+       $RUNAS chgrp $UID $DIR/$tfile && error "chgrp $UID $file succeeded"
+       $CHECKSTAT -t file -u \#$UID -g \#$RUNAS_ID $DIR/$tfile ||
+               error "$tfile should be owned by UID $UID and GID $RUNAS_ID"
 }
 run_test 6f "$RUNAS chgrp .../f6e (should return error) =="
 
 test_6g() {
        [ $RUNAS_ID -eq $UID ] && skip_env "RUNAS_ID = UID = $UID" && return
-       test_mkdir $DIR/$tdir || error
-        chmod 777 $DIR/$tdir || error
-        $RUNAS mkdir $DIR/$tdir/d || error
-        chmod g+s $DIR/$tdir/d || error
-        test_mkdir $DIR/$tdir/d/subdir
-       $CHECKSTAT -g \#$RUNAS_GID $DIR/$tdir/d/subdir || error
+       test_mkdir $DIR/$tdir || error "mkdir $tfile failed"
+       chmod 777 $DIR/$tdir || error "chmod 0777 $tdir failed"
+       $RUNAS mkdir $DIR/$tdir/d || error "mkdir $tdir/d failed"
+       chmod g+s $DIR/$tdir/d || error "chmod g+s $tdir/d failed"
+       test_mkdir $DIR/$tdir/d/subdir || error "mkdir $tdir/d/subdir failed"
+       $CHECKSTAT -g \#$RUNAS_GID $DIR/$tdir/d/subdir ||
+               error "$tdir/d/subdir should be GID $RUNAS_GID"
 }
 run_test 6g "Is new dir in sgid dir inheriting group?"
 
@@ -306,8 +289,9 @@ test_6h() { # bug 7331
        touch $DIR/$tfile || error "touch failed"
        chown $RUNAS_ID:$RUNAS_GID $DIR/$tfile || error "initial chown failed"
        $RUNAS -G$RUNAS_GID chown $RUNAS_ID:0 $DIR/$tfile &&
-               error "chown worked"
-       $CHECKSTAT -t file -u \#$RUNAS_ID -g \#$RUNAS_GID $DIR/$tfile || error
+               error "chown $RUNAS_ID:0 $tfile worked as GID $RUNAS_GID"
+       $CHECKSTAT -t file -u \#$RUNAS_ID -g \#$RUNAS_GID $DIR/$tfile ||
+               error "$tdir/$tfile should be UID $RUNAS_UID GID $RUNAS_GID"
 }
 run_test 6h "$RUNAS chown RUNAS_ID.0 .../f6h (should return error)"
 
@@ -315,7 +299,8 @@ test_7a() {
        test_mkdir $DIR/$tdir
        $MCREATE $DIR/$tdir/$tfile
        chmod 0666 $DIR/$tdir/$tfile
-       $CHECKSTAT -t file -p 0666 $DIR/$tdir/$tfile || error
+       $CHECKSTAT -t file -p 0666 $DIR/$tdir/$tfile ||
+               error "$tdir/$tfile should be mode 0666"
 }
 run_test 7a "mkdir .../d7; mcreate .../d7/f; chmod .../d7/f ===="
 
@@ -325,8 +310,8 @@ test_7b() {
        fi
        $MCREATE $DIR/$tdir/$tfile
        echo -n foo > $DIR/$tdir/$tfile
-       [ "`cat $DIR/$tdir/$tfile`" = "foo" ] || error
-       $CHECKSTAT -t file -s 3 $DIR/$tdir/$tfile || error
+       [ "$(cat $DIR/$tdir/$tfile)" = "foo" ] || error "$tdir/$tfile not 'foo'"
+       $CHECKSTAT -t file -s 3 $DIR/$tdir/$tfile || error "$tfile size not 3"
 }
 run_test 7b "mkdir .../d7; mcreate d7/f2; echo foo > d7/f2 ====="
 
@@ -334,7 +319,8 @@ test_8() {
        test_mkdir $DIR/$tdir
        touch $DIR/$tdir/$tfile
        chmod 0666 $DIR/$tdir/$tfile
-       $CHECKSTAT -t file -p 0666 $DIR/$tdir/$tfile || error
+       $CHECKSTAT -t file -p 0666 $DIR/$tdir/$tfile ||
+               error "$tfile mode not 0666"
 }
 run_test 8 "mkdir .../d8; touch .../d8/f; chmod .../d8/f ======="
 
@@ -342,7 +328,7 @@ test_9() {
        test_mkdir $DIR/$tdir
        test_mkdir $DIR/$tdir/d2
        test_mkdir $DIR/$tdir/d2/d3
-       $CHECKSTAT -t dir $DIR/$tdir/d2/d3 || error
+       $CHECKSTAT -t dir $DIR/$tdir/d2/d3 || error "$tdir/d2/d3 not a dir"
 }
 run_test 9 "mkdir .../d9 .../d9/d2 .../d9/d2/d3 ================"
 
@@ -350,7 +336,8 @@ test_10() {
        test_mkdir $DIR/$tdir
        test_mkdir $DIR/$tdir/d2
        touch $DIR/$tdir/d2/$tfile
-       $CHECKSTAT -t file $DIR/$tdir/d2/$tfile || error
+       $CHECKSTAT -t file $DIR/$tdir/d2/$tfile ||
+               error "$tdir/d2/$tfile not a file"
 }
 run_test 10 "mkdir .../d10 .../d10/d2; touch .../d10/d2/f ======"
 
@@ -359,7 +346,8 @@ test_11() {
        test_mkdir $DIR/$tdir/d2
        chmod 0666 $DIR/$tdir/d2
        chmod 0705 $DIR/$tdir/d2
-       $CHECKSTAT -t dir -p 0705 $DIR/$tdir/d2 || error
+       $CHECKSTAT -t dir -p 0705 $DIR/$tdir/d2 ||
+               error "$tdir/d2 mode not 0705"
 }
 run_test 11 "mkdir .../d11 d11/d2; chmod .../d11/d2 ============"
 
@@ -368,7 +356,8 @@ test_12() {
        touch $DIR/$tdir/$tfile
        chmod 0666 $DIR/$tdir/$tfile
        chmod 0654 $DIR/$tdir/$tfile
-       $CHECKSTAT -t file -p 0654 $DIR/$tdir/$tfile || error
+       $CHECKSTAT -t file -p 0654 $DIR/$tdir/$tfile ||
+               error "$tdir/d2 mode not 0654"
 }
 run_test 12 "touch .../d12/f; chmod .../d12/f .../d12/f ========"
 
@@ -376,7 +365,8 @@ test_13() {
        test_mkdir $DIR/$tdir
        dd if=/dev/zero of=$DIR/$tdir/$tfile count=10
        >  $DIR/$tdir/$tfile
-       $CHECKSTAT -t file -s 0 $DIR/$tdir/$tfile || error
+       $CHECKSTAT -t file -s 0 $DIR/$tdir/$tfile ||
+               error "$tdir/$tfile size not 0 after truncate"
 }
 run_test 13 "creat .../d13/f; dd .../d13/f; > .../d13/f ========"
 
@@ -384,7 +374,7 @@ test_14() {
        test_mkdir $DIR/$tdir
        touch $DIR/$tdir/$tfile
        rm $DIR/$tdir/$tfile
-       $CHECKSTAT -a $DIR/$tdir/$tfile || error
+       $CHECKSTAT -a $DIR/$tdir/$tfile || error "$tdir/$tfile not removed"
 }
 run_test 14 "touch .../d14/f; rm .../d14/f; rm .../d14/f ======="
 
@@ -392,7 +382,8 @@ test_15() {
        test_mkdir $DIR/$tdir
        touch $DIR/$tdir/$tfile
        mv $DIR/$tdir/$tfile $DIR/$tdir/${tfile}_2
-       $CHECKSTAT -t file $DIR/$tdir/${tfile}_2 || error
+       $CHECKSTAT -t file $DIR/$tdir/${tfile}_2 ||
+               error "$tdir/${tfile_2} not a file after rename"
 }
 run_test 15 "touch .../d15/f; mv .../d15/f .../d15/f2 =========="
 
@@ -400,7 +391,7 @@ test_16() {
        test_mkdir $DIR/$tdir
        touch $DIR/$tdir/$tfile
        rm -rf $DIR/$tdir/$tfile
-       $CHECKSTAT -a $DIR/$tdir/$tfile || error
+       $CHECKSTAT -a $DIR/$tdir/$tfile || error "$tdir/$tfile not removed"
 }
 run_test 16 "touch .../d16/f; rm -rf .../d16/f ================="
 
@@ -409,10 +400,12 @@ test_17a() {
        touch $DIR/$tdir/$tfile
        ln -s $DIR/$tdir/$tfile $DIR/$tdir/l-exist
        ls -l $DIR/$tdir
-       $CHECKSTAT -l $DIR/$tdir/$tfile $DIR/$tdir/l-exist || error
-       $CHECKSTAT -f -t f $DIR/$tdir/l-exist || error
+       $CHECKSTAT -l $DIR/$tdir/$tfile $DIR/$tdir/l-exist ||
+               error "$tdir/l-exist not a symlink"
+       $CHECKSTAT -f -t f $DIR/$tdir/l-exist ||
+               error "$tdir/l-exist not referencing a file"
        rm -f $DIR/$tdir/l-exist
-       $CHECKSTAT -a $DIR/$tdir/l-exist || error
+       $CHECKSTAT -a $DIR/$tdir/l-exist || error "$tdir/l-exist not removed"
 }
 run_test 17a "symlinks: create, remove (real) =================="
 
@@ -420,10 +413,12 @@ test_17b() {
        test_mkdir -p $DIR/$tdir
        ln -s no-such-file $DIR/$tdir/l-dangle
        ls -l $DIR/$tdir
-       $CHECKSTAT -l no-such-file $DIR/$tdir/l-dangle || error
-       $CHECKSTAT -fa $DIR/$tdir/l-dangle || error
+       $CHECKSTAT -l no-such-file $DIR/$tdir/l-dangle ||
+               error "$tdir/l-dangle not referencing no-such-file"
+       $CHECKSTAT -fa $DIR/$tdir/l-dangle ||
+               error "$tdir/l-dangle not referencing non-existent file"
        rm -f $DIR/$tdir/l-dangle
-       $CHECKSTAT -a $DIR/$tdir/l-dangle || error
+       $CHECKSTAT -a $DIR/$tdir/l-dangle || error "$tdir/l-dangle not removed"
 }
 run_test 17b "symlinks: create, remove (dangling) =============="
 
@@ -708,21 +703,22 @@ test_18() {
 run_test 18 "touch .../f ; ls ... =============================="
 
 test_19a() {
-       touch $DIR/f19
+       touch $DIR/$tfile
        ls -l $DIR
-       rm $DIR/f19
-       $CHECKSTAT -a $DIR/f19 || error
+       rm $DIR/$tfile
+       $CHECKSTAT -a $DIR/$tfile || error "$tfile was not removed"
 }
 run_test 19a "touch .../f19 ; ls -l ... ; rm .../f19 ==========="
 
 test_19b() {
-       ls -l $DIR/f19 && error || true
+       ls -l $DIR/$tfile && error "ls -l $tfile failed"|| true
 }
 run_test 19b "ls -l .../f19 (should return error) =============="
 
 test_19c() {
-       [ $RUNAS_ID -eq $UID ] && skip_env "RUNAS_ID = UID = $UID -- skipping" && return
-       $RUNAS touch $DIR/f19 && error || true
+       [ $RUNAS_ID -eq $UID ] &&
+               skip_env "RUNAS_ID = UID = $UID -- skipping" && return
+       $RUNAS touch $DIR/$tfile && error "create non-root file failed" || true
 }
 run_test 19c "$RUNAS touch .../f19 (should return error) =="
 
@@ -732,27 +728,28 @@ test_19d() {
 run_test 19d "cat .../f19 (should return error) =============="
 
 test_20() {
-       touch $DIR/f
-       rm $DIR/f
+       touch $DIR/$tfile
+       rm $DIR/$tfile
        log "1 done"
-       touch $DIR/f
-       rm $DIR/f
+       touch $DIR/$tfile
+       rm $DIR/$tfile
        log "2 done"
-       touch $DIR/f
-       rm $DIR/f
+       touch $DIR/$tfile
+       rm $DIR/$tfile
        log "3 done"
-       $CHECKSTAT -a $DIR/f || error
+       $CHECKSTAT -a $DIR/$tfile || error "$tfile was not removed"
 }
 run_test 20 "touch .../f ; ls -l ... ==========================="
 
 test_21() {
-       test_mkdir $DIR/d21
-       [ -f $DIR/d21/dangle ] && rm -f $DIR/d21/dangle
-       ln -s dangle $DIR/d21/link
-       echo foo >> $DIR/d21/link
-       cat $DIR/d21/dangle
-       $CHECKSTAT -t link $DIR/d21/link || error
-       $CHECKSTAT -f -t file $DIR/d21/link || error
+       test_mkdir -p $DIR/$tdir
+       [ -f $DIR/$tdir/dangle ] && rm -f $DIR/$tdir/dangle
+       ln -s dangle $DIR/$tdir/link
+       echo foo >> $DIR/$tdir/link
+       cat $DIR/$tdir/dangle
+       $CHECKSTAT -t link $DIR/$tdir/link || error "$tdir/link not a link"
+       $CHECKSTAT -f -t file $DIR/$tdir/link ||
+               error "$tdir/link not linked to a file"
 }
 run_test 21 "write to dangling link ============================"
 
@@ -792,43 +789,43 @@ test_23b() { # bug 18988
 }
 run_test 23b "O_APPEND check =========================="
 
+# rename sanity
 test_24a() {
-       echo '== rename sanity =============================================='
        echo '-- same directory rename'
-       test_mkdir $DIR/R1
-       touch $DIR/R1/f
-       mv $DIR/R1/f $DIR/R1/g
-       $CHECKSTAT -t file $DIR/R1/g || error
+       test_mkdir $DIR/$tdir
+       touch $DIR/$tdir/$tfile.1
+       mv $DIR/$tdir/$tfile.1 $DIR/$tdir/$tfile.2
+       $CHECKSTAT -t file $DIR/$tdir/$tfile.2 || error "$tfile.2 not a file"
 }
-run_test 24a "touch .../R1/f; rename .../R1/f .../R1/g ========="
+run_test 24a "rename file to non-existent target"
 
 test_24b() {
-       test_mkdir $DIR/R2
-       touch $DIR/R2/{f,g}
-       mv $DIR/R2/f $DIR/R2/g
-       $CHECKSTAT -a $DIR/R2/f || error
-       $CHECKSTAT -t file $DIR/R2/g || error
+       test_mkdir $DIR/$tdir
+       touch $DIR/$tdir/$tfile.{1,2}
+       mv $DIR/$tdir/$tfile.1 $DIR/$tdir/$tfile.2
+       $CHECKSTAT -a $DIR/$tdir/$tfile.1 || error "$tfile.1 exists"
+       $CHECKSTAT -t file $DIR/$tdir/$tfile.2 || error "$tfile.2 not a file"
 }
-run_test 24b "touch .../R2/{f,g}; rename .../R2/f .../R2/g ====="
+run_test 24b "rename file to existing target"
 
 test_24c() {
-       test_mkdir $DIR/R3
-       test_mkdir $DIR/R3/f
-       mv $DIR/R3/f $DIR/R3/g
-       $CHECKSTAT -a $DIR/R3/f || error
-       $CHECKSTAT -t dir $DIR/R3/g || error
+       test_mkdir $DIR/$tdir
+       test_mkdir $DIR/$tdir/d$testnum.1
+       mv $DIR/$tdir/d$testnum.1 $DIR/$tdir/d$testnum.2
+       $CHECKSTAT -a $DIR/$tdir/d$testnum.1 || error "d$testnum.1 exists"
+       $CHECKSTAT -t dir $DIR/$tdir/d$testnum.2 || error "d$testnum.2 not dir"
 }
-run_test 24c "mkdir .../R3/f; rename .../R3/f .../R3/g ========="
+run_test 24c "rename directory to non-existent target"
 
 test_24d() {
-       test_mkdir $DIR/R4
-       test_mkdir $DIR/R4/f
-       test_mkdir $DIR/R4/g
-       mrename $DIR/R4/f $DIR/R4/g
-       $CHECKSTAT -a $DIR/R4/f || error
-       $CHECKSTAT -t dir $DIR/R4/g || error
+       test_mkdir $DIR/$tdir
+       test_mkdir $DIR/$tdir/d$testnum.1
+       test_mkdir $DIR/$tdir/d$ttestnum.2
+       mrename $DIR/$tdir/d$testnum.1 $DIR/$tdir/d$testnum.2
+       $CHECKSTAT -a $DIR/$tdir/d$testnum.1 || error "d$testnum.1 exists"
+       $CHECKSTAT -t dir $DIR/$tdir/d$testnum.2 || error "d$testnum.2 not dir"
 }
-run_test 24d "mkdir .../R4/{f,g}; rename .../R4/f .../R4/g ====="
+run_test 24d "rename directory to existing target"
 
 test_24e() {
        echo '-- cross directory renames --'
@@ -2597,6 +2594,12 @@ test_34h() {
             # flush when getting the group lock
        $MULTIOP $DIR/$tfile OG${gid}T${sz}g${gid}c &
        MULTIPID=$!
+
+       # Since just timed wait is not good enough, let's do a sync write
+       # that way we are sure enough time for a roundtrip + processing
+       # passed + 2 seconds of extra margin.
+       dd if=/dev/zero of=$DIR/${tfile}-1 bs=4096 oflag=direct count=1
+       rm $DIR/${tfile}-1
        sleep 2
 
        if [[ `ps h -o comm -p $MULTIPID` == "multiop" ]]; then
@@ -3090,9 +3093,11 @@ test_39m() {
 run_test 39m "test atime and mtime before 1970"
 
 test_40() {
-       dd if=/dev/zero of=$DIR/f40 bs=4096 count=1
-       $RUNAS $OPENFILE -f O_WRONLY:O_TRUNC $DIR/f40 && error
-       $CHECKSTAT -t file -s 4096 $DIR/f40 || error
+       dd if=/dev/zero of=$DIR/$tfile bs=4096 count=1
+       $RUNAS $OPENFILE -f O_WRONLY:O_TRUNC $DIR/$tfile &&
+               error "openfile O_WRONLY:O_TRUNC $tfile failed"
+       $CHECKSTAT -t file -s 4096 $DIR/$tfile ||
+               error "$tfile is not 4096 bytes in size"
 }
 run_test 40 "failed open(O_TRUNC) doesn't truncate ============="
 
@@ -3627,7 +3632,7 @@ test_50() {
        # bug 1485
        test_mkdir $DIR/$tdir
        cd $DIR/$tdir
-       ls /proc/$$/cwd || error
+       ls /proc/$$/cwd || error "ls /proc/$$/cwd failed"
 }
 run_test 50 "special situations: /proc symlinks  ==============="
 
@@ -3639,13 +3644,13 @@ test_51a() {    # was test_51
        rm $DIR/$tdir/foo
        createmany -m $DIR/$tdir/longfile 201
        FNUM=202
-       while [ `ls -sd $DIR/$tdir | awk '{ print $1 }'` -eq 4 ]; do
+       while [ $(ls -sd $DIR/$tdir | awk '{ print $1 }') -eq 4 ]; do
                $MCREATE $DIR/$tdir/longfile$FNUM
                FNUM=$(($FNUM + 1))
                echo -n "+"
        done
        echo
-       ls -l $DIR/$tdir > /dev/null || error
+       ls -l $DIR/$tdir > /dev/null || error "ls -l $DIR/$tdir failed"
 }
 run_test 51a "special situations: split htree with empty entry =="
 
@@ -3784,13 +3789,13 @@ test_52b() {
                                        error "link worked"
        echo foo >> $DIR/$tdir/foo && error "echo worked"
        mrename $DIR/$tdir/foo $DIR/$tdir/foo_ren && error "rename worked"
-       [ -f $DIR/$tdir/foo ] || error
-       [ -f $DIR/$tdir/foo_ren ] && error
+       [ -f $DIR/$tdir/foo ] || error "$tdir/foo is not a file"
+       [ -f $DIR/$tdir/foo_ren ] && error "$tdir/foo_ren is not a file"
        lsattr $DIR/$tdir/foo | egrep -q "^-+i[-e]+ $DIR/$tdir/foo" ||
                                                        error "lsattr"
        chattr -i $DIR/$tdir/foo || error "chattr failed"
 
-       rm -fr $DIR/$tdir || error
+       rm -fr $DIR/$tdir || error "unable to remove $DIR/$tdir"
 }
 run_test 52b "immutable flag test (should return errors) ======="
 
@@ -3845,11 +3850,13 @@ test_53() {
 run_test 53 "verify that MDS and OSTs agree on pre-creation ===="
 
 test_54a() {
-        [ ! -f "$SOCKETSERVER" ] && skip_env "no socketserver, skipping" && return
-        [ ! -f "$SOCKETCLIENT" ] && skip_env "no socketclient, skipping" && return
-       $SOCKETSERVER $DIR/socket
-       $SOCKETCLIENT $DIR/socket || error
-       $MUNLINK $DIR/socket
+       [ ! -f "$SOCKETSERVER" ] &&
+               skip_env "no socketserver, skipping" && return
+       [ ! -f "$SOCKETCLIENT" ] &&
+               skip_env "no socketclient, skipping" && return
+       $SOCKETSERVER $DIR/socket
+       $SOCKETCLIENT $DIR/socket || error "$SOCKETCLIENT $DIR/socket failed"
+       $MUNLINK $DIR/socket
 }
 run_test 54a "unix domain socket test =========================="
 
@@ -3857,7 +3864,7 @@ test_54b() {
        f="$DIR/f54b"
        mknod $f c 1 3
        chmod 0666 $f
-       dd if=/dev/zero of=$f bs=`page_size` count=1
+       dd if=/dev/zero of=$f bs=$(page_size) count=1
 }
 run_test 54b "char device works in lustre ======================"
 
@@ -3866,7 +3873,7 @@ find_loop_dev() {
        [ -b /dev/loop0 ] && LOOPBASE=/dev/loop
        [ -z "$LOOPBASE" ] && echo "/dev/loop/0 and /dev/loop0 gone?" && return
 
-       for i in `seq 3 7`; do
+       for i in $(seq 3 7); do
                losetup $LOOPBASE$i > /dev/null 2>&1 && continue
                LOOPDEV=$LOOPBASE$i
                LOOPNUM=$i
@@ -3902,7 +3909,7 @@ test_54d() {
        f="$DIR/f54d"
        string="aaaaaa"
        mknod $f p
-       [ "$string" = `echo $string > $f | cat $f` ] || error
+       [ "$string" = $(echo $string > $f | cat $f) ] || error "$f != $string"
 }
 run_test 54d "fifo device works in lustre ======================"
 
@@ -3911,7 +3918,7 @@ test_54e() {
        f="$DIR/f54e"
        string="aaaaaa"
        cp -aL /dev/console $f
-       echo $string > $f || error
+       echo $string > $f || error "echo $string to $f failed"
 }
 run_test 54e "console/tty device works in lustre ======================"
 
@@ -4673,9 +4680,9 @@ run_test 60d "test printk console message masking"
 test_61() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        f="$DIR/f61"
-       dd if=/dev/zero of=$f bs=`page_size` count=1
+       dd if=/dev/zero of=$f bs=$(page_size) count=1 || error "dd $f failed"
        cancel_lru_locks osc
-       $MULTIOP $f OSMWUc || error
+       $MULTIOP $f OSMWUc || error "$MULTIOP $f failed"
        sync
 }
 run_test 61 "mmap() writes don't make sync hang ================"
@@ -5068,26 +5075,29 @@ run_test 71 "Running dbench on lustre (don't segment fault) ===="
 
 test_72a() { # bug 5695 - Test that on 2.6 remove_suid works properly
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-       check_kernel_version 43 || return 0
-       [ "$RUNAS_ID" = "$UID" ] && skip_env "RUNAS_ID = UID = $UID -- skipping" && return
+       [ "$RUNAS_ID" = "$UID" ] &&
+               skip_env "RUNAS_ID = UID = $UID -- skipping" && return
 
-        # Check that testing environment is properly set up. Skip if not
-        FAIL_ON_ERROR=false check_runas_id_ret $RUNAS_ID $RUNAS_GID $RUNAS || {
-                skip_env "User $RUNAS_ID does not exist - skipping"
-                return 0
-        }
+       # Check that testing environment is properly set up. Skip if not
+       FAIL_ON_ERROR=false check_runas_id_ret $RUNAS_ID $RUNAS_GID $RUNAS || {
+               skip_env "User $RUNAS_ID does not exist - skipping"
+               return 0
+       }
        # We had better clear the $DIR to get enough space for dd
        rm -rf $DIR/*
-       touch $DIR/f72
-       chmod 777 $DIR/f72
-       chmod ug+s $DIR/f72
-       $RUNAS dd if=/dev/zero of=$DIR/f72 bs=512 count=1 || error
+       touch $DIR/$tfile
+       chmod 777 $DIR/$tfile
+       chmod ug+s $DIR/$tfile
+       $RUNAS dd if=/dev/zero of=$DIR/$tfile bs=512 count=1 ||
+               error "$RUNAS dd $DIR/$tfile failed"
        # See if we are still setuid/sgid
-       test -u $DIR/f72 -o -g $DIR/f72 && error "S/gid is not dropped on write"
+       test -u $DIR/$tfile -o -g $DIR/$tfile &&
+               error "S/gid is not dropped on write"
        # Now test that MDS is updated too
        cancel_lru_locks mdc
-       test -u $DIR/f72 -o -g $DIR/f72 && error "S/gid is not dropped on MDS"
-       rm -f $DIR/f72
+       test -u $DIR/$tfile -o -g $DIR/$tfile &&
+               error "S/gid is not dropped on MDS"
+       rm -f $DIR/$tfile
 }
 run_test 72a "Test that remove suid works properly (bug5695) ===="
 
@@ -5589,20 +5599,21 @@ test_82() { # LU-1031
 run_test 82 "Basic grouplock test ==============================="
 
 test_99a() {
-        [ -z "$(which cvs 2>/dev/null)" ] && skip_env "could not find cvs" && \
-           return
+       [ -z "$(which cvs 2>/dev/null)" ] && skip_env "could not find cvs" &&
+               return
        test_mkdir -p $DIR/d99cvsroot
        chown $RUNAS_ID $DIR/d99cvsroot
        local oldPWD=$PWD       # bug 13584, use $TMP as working dir
        cd $TMP
 
-       $RUNAS cvs -d $DIR/d99cvsroot init || error
+       $RUNAS cvs -d $DIR/d99cvsroot init || error "cvs init failed"
        cd $oldPWD
 }
 run_test 99a "cvs init ========================================="
 
 test_99b() {
-        [ -z "$(which cvs 2>/dev/null)" ] && skip_env "could not find cvs" && return
+       [ -z "$(which cvs 2>/dev/null)" ] &&
+               skip_env "could not find cvs" && return
        [ ! -d $DIR/d99cvsroot ] && test_99a
        cd /etc/init.d
        # some versions of cvs import exit(1) when asked to import links or
@@ -6015,19 +6026,21 @@ test_102a() {
        touch $testfile
 
        [ "$UID" != 0 ] && skip_env "must run as root" && return
-       [ -z "`lctl get_param -n mdc.*-mdc-*.connect_flags | grep xattr`" ] &&
+       [ -z "$(lctl get_param -n mdc.*-mdc-*.connect_flags | grep xattr)" ] &&
                skip_env "must have user_xattr" && return
 
        [ -z "$(which setfattr 2>/dev/null)" ] &&
                skip_env "could not find setfattr" && return
 
        echo "set/get xattr..."
-       setfattr -n trusted.name1 -v value1 $testfile || error
+       setfattr -n trusted.name1 -v value1 $testfile ||
+               error "setfattr -n trusted.name1=value1 $testfile failed"
        getfattr -n trusted.name1 $testfile 2> /dev/null |
          grep "trusted.name1=.value1" ||
                error "$testfile missing trusted.name1=value1"
 
-       setfattr -n user.author1 -v author1 $testfile || error
+       setfattr -n user.author1 -v author1 $testfile ||
+               error "setfattr -n user.author1=author1 $testfile failed"
        getfattr -n user.author1 $testfile 2> /dev/null |
          grep "user.author1=.author1" ||
                error "$testfile missing trusted.author1=author1"
@@ -6308,51 +6321,53 @@ run_acl_subtest()
 }
 
 test_103 () {
-    [ "$UID" != 0 ] && skip_env "must run as root" && return
-    [ -z "$(lctl get_param -n mdc.*-mdc-*.connect_flags | grep acl)" ] && skip "must have acl enabled" && return
-    [ -z "$(which setfacl 2>/dev/null)" ] && skip_env "could not find setfacl" && return
-    $GSS && skip "could not run under gss" && return
+       [ "$UID" != 0 ] && skip_env "must run as root" && return
+       [ -z "$(lctl get_param -n mdc.*-mdc-*.connect_flags | grep acl)" ] &&
+               skip "must have acl enabled" && return
+       [ -z "$(which setfacl 2>/dev/null)" ] &&
+               skip_env "could not find setfacl" && return
+       $GSS && skip "could not run under gss" && return
 
-    declare -a identity_old
+       declare -a identity_old
 
        for num in $(seq $MDSCOUNT); do
                switch_identity $num true || identity_old[$num]=$?
        done
 
-    SAVE_UMASK=`umask`
-    umask 0022
-    cd $DIR
-
-    echo "performing cp ..."
-    run_acl_subtest cp || error
-    echo "performing getfacl-noacl..."
-    run_acl_subtest getfacl-noacl || error "getfacl-noacl test failed"
-    echo "performing misc..."
-    run_acl_subtest misc || error  "misc test failed"
-    echo "performing permissions..."
-    run_acl_subtest permissions || error "permissions failed"
-    echo "performing setfacl..."
-    run_acl_subtest setfacl || error  "setfacl test failed"
-
-    # inheritance test got from HP
-    echo "performing inheritance..."
-    cp $LUSTRE/tests/acl/make-tree . || error "cannot copy make-tree"
-    chmod +x make-tree || error "chmod +x failed"
-    run_acl_subtest inheritance || error "inheritance test failed"
-    rm -f make-tree
+       SAVE_UMASK=$(umask)
+       umask 0022
+       cd $DIR
+
+       echo "performing cp ..."
+       run_acl_subtest cp || error "run_acl_subtest cp failed"
+       echo "performing getfacl-noacl..."
+       run_acl_subtest getfacl-noacl || error "getfacl-noacl test failed"
+       echo "performing misc..."
+       run_acl_subtest misc || error  "misc test failed"
+       echo "performing permissions..."
+       run_acl_subtest permissions || error "permissions failed"
+       echo "performing setfacl..."
+       run_acl_subtest setfacl || error  "setfacl test failed"
+
+       # inheritance test got from HP
+       echo "performing inheritance..."
+       cp $LUSTRE/tests/acl/make-tree . || error "cannot copy make-tree"
+       chmod +x make-tree || error "chmod +x failed"
+       run_acl_subtest inheritance || error "inheritance test failed"
+       rm -f make-tree
 
        echo "LU-974 ignore umask when acl is enabled..."
-       run_acl_subtest 974 || error "LU-974 test failed"
+       run_acl_subtest 974 || error "LU-974 umask test failed"
        if [ $MDSCOUNT -ge 2 ]; then
                run_acl_subtest 974_remote ||
-                       error "LU-974 test failed under remote dir"
+                       error "LU-974 umask test failed under remote dir"
        fi
 
-    echo "LU-2561 newly created file is same size as directory..."
-    run_acl_subtest 2561 || error "LU-2561 test failed"
+       echo "LU-2561 newly created file is same size as directory..."
+       run_acl_subtest 2561 || error "LU-2561 test failed"
 
-    cd $SAVE_PWD
-    umask $SAVE_UMASK
+       cd $SAVE_PWD
+       umask $SAVE_UMASK
 
        for num in $(seq $MDSCOUNT); do
                if [ "${identity_old[$num]}" = 1 ]; then
@@ -6372,12 +6387,12 @@ test_104a() {
        lfs df $DIR/$tfile || error "lfs df $DIR/$tfile failed"
        lfs df -ih $DIR/$tfile || error "lfs df -ih $DIR/$tfile failed"
 
-        OSC=`lctl dl |grep OST0000-osc-[^M] |awk '{print $4}'`
+       local OSC=$(lctl dl | grep OST0000-osc-[^M] | awk '{ print $4 }')
        lctl --device %$OSC deactivate
        lfs df || error "lfs df with deactivated OSC failed"
        lctl --device %$OSC activate
-        # wait the osc back to normal
-        wait_osc_import_state client ost FULL
+       # wait the osc back to normal
+       wait_osc_import_state client ost FULL
 
        lfs df || error "lfs df with reactivated OSC failed"
        rm -f $DIR/$tfile
@@ -6386,12 +6401,13 @@ run_test 104a "lfs df [-ih] [path] test ========================="
 
 test_104b() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-       [ $RUNAS_ID -eq $UID ] && skip_env "RUNAS_ID = UID = $UID -- skipping" && return
+       [ $RUNAS_ID -eq $UID ] &&
+               skip_env "RUNAS_ID = UID = $UID -- skipping" && return
        chmod 666 /dev/obd
-       denied_cnt=$((`$RUNAS $LFS check servers 2>&1 | grep "Permission denied" | wc -l`))
-       if [ $denied_cnt -ne 0 ];
-       then
-                   error "lfs check servers test failed"
+       denied_cnt=$(($($RUNAS $LFS check servers 2>&1 |
+                       grep "Permission denied" | wc -l)))
+       if [ $denied_cnt -ne 0 ]; then
+               error "lfs check servers test failed"
        fi
 }
 run_test 104b "$RUNAS lfs check servers test ===================="
@@ -6399,7 +6415,7 @@ run_test 104b "$RUNAS lfs check servers test ===================="
 test_105a() {
        # doesn't work on 2.4 kernels
        touch $DIR/$tfile
-       if [ -n "`mount | grep \"$MOUNT.*flock\" | grep -v noflock`" ]; then
+       if [ -n "$(mount | grep "$MOUNT.*flock" | grep -v noflock)" ]; then
                flocks_test 1 on -f $DIR/$tfile || error "fail flock on"
        else
                flocks_test 1 off -f $DIR/$tfile || error "fail flock off"
@@ -6410,7 +6426,7 @@ run_test 105a "flock when mounted without -o flock test ========"
 
 test_105b() {
        touch $DIR/$tfile
-       if [ -n "`mount | grep \"$MOUNT.*flock\" | grep -v noflock`" ]; then
+       if [ -n "$(mount | grep "$MOUNT.*flock" | grep -v noflock)" ]; then
                flocks_test 1 on -c $DIR/$tfile || error "fail flock on"
        else
                flocks_test 1 off -c $DIR/$tfile || error "fail flock off"
@@ -6421,7 +6437,7 @@ run_test 105b "fcntl when mounted without -o flock test ========"
 
 test_105c() {
        touch $DIR/$tfile
-       if [ -n "`mount | grep \"$MOUNT.*flock\" | grep -v noflock`" ]; then
+       if [ -n "$(mount | grep "$MOUNT.*flock" | grep -v noflock)" ]; then
                flocks_test 1 on -l $DIR/$tfile || error "fail flock on"
        else
                flocks_test 1 off -l $DIR/$tfile || error "fail flock off"
@@ -6433,7 +6449,7 @@ run_test 105c "lockf when mounted without -o flock test ========"
 test_105d() { # bug 15924
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        test_mkdir -p $DIR/$tdir
-       [ -z "`mount | grep \"$MOUNT.*flock\" | grep -v noflock`" ] && \
+       [ -z "$(mount | grep "$MOUNT.*flock" | grep -v noflock)" ] &&
                skip "mount w/o flock enabled" && return
        #define OBD_FAIL_LDLM_CP_CB_WAIT  0x315
        $LCTL set_param fail_loc=0x80000315
@@ -6442,7 +6458,7 @@ test_105d() { # bug 15924
 run_test 105d "flock race (should not freeze) ========"
 
 test_105e() { # bug 22660 && 22040
-       [ -z "`mount | grep \"$MOUNT.*flock\" | grep -v noflock`" ] && \
+       [ -z "$(mount | grep "$MOUNT.*flock" | grep -v noflock)" ] &&
                skip "mount w/o flock enabled" && return
        touch $DIR/$tfile
        flocks_test 3 $DIR/$tfile
@@ -8628,17 +8644,17 @@ test_151() {
                return 0
        fi
 
-#define OBD_FAIL_OBD_NO_LRU  0x609
+       #define OBD_FAIL_OBD_NO_LRU  0x609
        do_nodes $list $LCTL set_param fail_loc=0x609
 
        # pages should be in the case right after write
        dd if=/dev/urandom of=$DIR/$tfile bs=4k count=$CPAGES ||
                error "dd failed"
 
-       local BEFORE=`roc_hit`
+       local BEFORE=$(roc_hit)
        cancel_lru_locks osc
        cat $DIR/$tfile >/dev/null
-       local AFTER=`roc_hit`
+       local AFTER=$(roc_hit)
 
        do_nodes $list $LCTL set_param fail_loc=0
 
@@ -8652,10 +8668,10 @@ test_151() {
         cat $DIR/$tfile >/dev/null
 
         # now data shouldn't be found in the cache
-        BEFORE=`roc_hit`
+       BEFORE=$(roc_hit)
         cancel_lru_locks osc
         cat $DIR/$tfile >/dev/null
-        AFTER=`roc_hit`
+       AFTER=$(roc_hit)
         if let "AFTER - BEFORE != 0"; then
                 error "IN CACHE: before: $BEFORE, after: $AFTER"
         fi
@@ -8780,11 +8796,6 @@ dot_lustre_fid_permission_check() {
        mrename $test_dir/$tdir $MOUNT/.lustre/fid &&
                error "rename to $MOUNT/.lustre/fid should fail."
 
-       echo "rename .lustre to itself"
-       fid=$($LFS path2fid $MOUNT)
-       mrename $MOUNT/.lustre $MOUNT/.lustre/fid/$fid/.lustre &&
-               error "rename .lustre to itself should fail."
-
        local old_obf_mode=$(stat --format="%a" $DIR/.lustre/fid)
        local new_obf_mode=777
 
@@ -9527,7 +9538,7 @@ cleanup_obdecho_osc () {
         return 0
 }
 
-obdecho_create_test() {
+obdecho_test() {
         local OBD=$1
         local node=$2
         local rc=0
@@ -9540,9 +9551,13 @@ obdecho_create_test() {
             [ ${PIPESTATUS[0]} -eq 0 -a -n "$id" ] || rc=3
         fi
         echo "New object id is $id"
-        [ $rc -eq 0 ] && { do_facet $node "$LCTL --device ec test_brw 10 w v 64 $id" ||
-                           rc=4; }
-        [ $rc -eq 0 -o $rc -gt 2 ] && { do_facet $node "$LCTL --device ec "    \
+       [ $rc -eq 0 ] && { do_facet $node "$LCTL --device ec getattr $id" ||
+                          rc=4; }
+       [ $rc -eq 0 ] && { do_facet $node "$LCTL --device ec test_brw 10 w v 64 $id" ||
+                          rc=4; }
+       [ $rc -eq 0 ] && { do_facet $node "$LCTL --device ec destroy $id 1" ||
+                          rc=4; }
+       [ $rc -eq 0 -o $rc -gt 2 ] && { do_facet $node "$LCTL --device ec "    \
                                         "cleanup" || rc=5; }
         [ $rc -eq 0 -o $rc -gt 1 ] && { do_facet $node "$LCTL --device ec "    \
                                         "detach" || rc=6; }
@@ -9552,43 +9567,43 @@ obdecho_create_test() {
 
 test_180a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-        remote_ost_nodsh && skip "remote OST with nodsh" && return
-        local rc=0
-        local rmmod_local=0
+       remote_ost_nodsh && skip "remote OST with nodsh" && return
+       local rc=0
+       local rmmod_local=0
 
-        if ! module_loaded obdecho; then
-            load_module obdecho/obdecho
-            rmmod_local=1
-        fi
+       if ! module_loaded obdecho; then
+           load_module obdecho/obdecho
+           rmmod_local=1
+       fi
 
-        local osc=$($LCTL dl | grep -v mdt | awk '$3 == "osc" {print $4; exit}')
-        local host=$(lctl get_param -n osc.$osc.import |
-                             awk '/current_connection:/ {print $2}' )
-        local target=$(lctl get_param -n osc.$osc.import |
-                             awk '/target:/ {print $2}' )
-        target=${target%_UUID}
-
-        [[ -n $target ]]  && { setup_obdecho_osc $host $target || rc=1; } || rc=1
-        [ $rc -eq 0 ] && { obdecho_create_test ${target}_osc client || rc=2; }
-        [[ -n $target ]] && cleanup_obdecho_osc $target
-        [ $rmmod_local -eq 1 ] && rmmod obdecho
-        return $rc
+       local osc=$($LCTL dl | grep -v mdt | awk '$3 == "osc" {print $4; exit}')
+       local host=$(lctl get_param -n osc.$osc.import |
+                            awk '/current_connection:/ {print $2}' )
+       local target=$(lctl get_param -n osc.$osc.import |
+                            awk '/target:/ {print $2}' )
+       target=${target%_UUID}
+
+       [[ -n $target ]]  && { setup_obdecho_osc $host $target || rc=1; } || rc=1
+       [ $rc -eq 0 ] && { obdecho_test ${target}_osc client || rc=2; }
+       [[ -n $target ]] && cleanup_obdecho_osc $target
+       [ $rmmod_local -eq 1 ] && rmmod obdecho
+       return $rc
 }
 run_test 180a "test obdecho on osc"
 
 test_180b() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-        remote_ost_nodsh && skip "remote OST with nodsh" && return
-        local rc=0
-        local rmmod_remote=0
-
-        do_facet ost1 "lsmod | grep -q obdecho || "                      \
-                      "{ insmod ${LUSTRE}/obdecho/obdecho.ko || "        \
-                      "modprobe obdecho; }" && rmmod_remote=1
-        target=$(do_facet ost1 $LCTL dl | awk '/obdfilter/ {print $4;exit}')
-        [[ -n $target ]] && { obdecho_create_test $target ost1 || rc=1; }
-        [ $rmmod_remote -eq 1 ] && do_facet ost1 "rmmod obdecho"
-        return $rc
+       remote_ost_nodsh && skip "remote OST with nodsh" && return
+       local rc=0
+       local rmmod_remote=0
+
+       do_facet ost1 "lsmod | grep -q obdecho || "                      \
+                     "{ insmod ${LUSTRE}/obdecho/obdecho.ko || "        \
+                     "modprobe obdecho; }" && rmmod_remote=1
+       target=$(do_facet ost1 $LCTL dl | awk '/obdfilter/ {print $4;exit}')
+       [[ -n $target ]] && { obdecho_test $target ost1 || rc=1; }
+       [ $rmmod_remote -eq 1 ] && do_facet ost1 "rmmod obdecho"
+       return $rc
 }
 run_test 180b "test obdecho directly on obdfilter"
 
@@ -11182,6 +11197,13 @@ test_232() {
 }
 run_test 232 "failed lock should not block umount"
 
+test_233() {
+       local fid=$($LFS path2fid $MOUNT)
+       stat $MOUNT/.lustre/fid/$fid > /dev/null ||
+               error "cannot access $MOUNT using its FID '$fid'"
+}
+run_test 233 "checking that OBF of the FS root succeeds"
+
 #
 # tests that do cleanup/setup should be run at the end
 #