6 PATH=$SRCDIR:$SRCDIR/../utils:$PATH
8 CHECKSTAT=${CHECKSTAT:-"./checkstat -v"}
9 CREATETEST=${CREATETEST:-createtest}
11 LSTRIPE=${LSTRIPE:-lstripe}
12 MCREATE=${MCREATE:-mcreate}
13 TOEXCL=${TOEXCL:-toexcl}
15 MOUNT=${MOUNT:-/mnt/lustre}
20 sh llmountcleanup.sh > /dev/null || exit 20
25 sh llrmount.sh > /dev/null || exit 10
39 mount | grep $MOUNT || sh llmount.sh
41 echo '== touch .../f ; rm .../f ======================== test 0'
43 $CHECKSTAT -t file $DIR/f || error
45 $CHECKSTAT -a $DIR/f || error
50 echo '== mkdir .../d1; mkdir .../d1/d2 ================= test 1'
53 $CHECKSTAT -t dir $DIR/d1/d2 || error
58 echo '== rmdir .../d1/d2; rmdir .../d1 ================= test 1b'
61 $CHECKSTAT -a $DIR/d1 || error
66 echo '== mkdir .../d2; touch .../d2/f ================== test 2'
69 $CHECKSTAT -t file $DIR/d2/f || error
74 echo '== rm -r .../d2; touch .../d2/f ================== test 2b'
76 $CHECKSTAT -a $DIR/d2 || error
81 echo '== mkdir .../d3 ================================== test 3'
83 $CHECKSTAT -t dir $DIR/d3 || error
87 echo '== touch .../d3/f ================================ test 3b'
89 $CHECKSTAT -t file $DIR/d3/f || error
93 echo '== rm -r .../d3 ================================== test 3c'
95 $CHECKSTAT -a $DIR/d3 || error
100 echo '== mkdir .../d4 ================================== test 4'
102 $CHECKSTAT -t dir $DIR/d4 || error
106 echo '== mkdir .../d4/d2 =============================== test 4b'
108 $CHECKSTAT -t dir $DIR/d4/d2 || error
113 echo '== mkdir .../d5; mkdir .../d5/d2; chmod .../d5/d2 = test 5'
116 chmod 0707 $DIR/d5/d2
117 $CHECKSTAT -t dir -p 0707 $DIR/d5/d2 || error
122 echo '== touch .../f6; chmod .../f6 ==================== test 6'
125 $CHECKSTAT -t file -p 0666 $DIR/f6 || error
130 echo '== mkdir .../d7; mcreate .../d7/f; chmod .../d7/f = test 7'
134 $CHECKSTAT -t file -p 0666 $DIR/d7/f || error
139 echo '== mkdir .../d7; mcreate .../d7/f2; chmod .../d7/f2 = test 7b'
141 echo -n foo > $DIR/d7/f2
142 [ "`cat $DIR/d7/f2`" = "foo" ] || error
143 $CHECKSTAT -t file -s 3 $DIR/d7/f2 || error
148 echo '== mkdir .../d8; touch .../d8/f; chmod .../d8/f == test 8'
152 $CHECKSTAT -t file -p 0666 $DIR/d8/f || error
158 echo '== mkdir .../d9 .../d9/d2 .../d9/d2/d3 =========== test 9'
162 $CHECKSTAT -t dir $DIR/d9/d2/d3 || error
168 echo '== mkdir .../d10 .../d10/d2; touch .../d10/d2/f = test 10'
172 $CHECKSTAT -t file $DIR/d10/d2/f || error
177 echo '== mkdir .../d11 d11/d2; chmod .../d11/d2 ======= test 11'
180 chmod 0666 $DIR/d11/d2
181 chmod 0705 $DIR/d11/d2
182 $CHECKSTAT -t dir -p 0705 $DIR/d11/d2 || error
187 echo '== mkdir .../d12; touch .../d12/f; chmod .../d12/f == test 12'
190 chmod 0666 $DIR/d12/f
191 chmod 0654 $DIR/d12/f
192 $CHECKSTAT -t file -p 0654 $DIR/d12/f || error
197 echo '== mkdir .../d13; creat .../d13/f; .../d13/f; > .../d13/f == test 13'
199 dd if=/dev/zero of=$DIR/d13/f count=10
201 $CHECKSTAT -t file -s 0 $DIR/d13/f || error
206 echo '================================================== test 14'
210 $CHECKSTAT -a $DIR/d14/f || error
215 echo '================================================== test 15'
218 mv $DIR/d15/f $DIR/d15/f2
219 $CHECKSTAT -t file $DIR/d15/f2 || error
224 echo '================================================== test 16'
228 $CHECKSTAT -a $DIR/d16/f || error
233 echo '== symlinks: create, remove (dangling and real) == test 17'
236 ln -s $DIR/d17/f $DIR/d17/l-exist
237 ln -s no-such-file $DIR/d17/l-dangle
239 $CHECKSTAT -l $DIR/d17/f $DIR/d17/l-exist || error
240 $CHECKSTAT -f -t f $DIR/d17/l-exist || error
241 $CHECKSTAT -l no-such-file $DIR/d17/l-dangle || error
242 $CHECKSTAT -fa $DIR/d17/l-dangle || error
245 $CHECKSTAT -a $DIR/l-dangle || error
246 $CHECKSTAT -a $DIR/l-exist || error
251 echo "== touch .../f ; ls ... ========================= test 18"
258 echo "== touch .../f ; ls -l ... ====================== test 19"
262 $CHECKSTAT -a $DIR/f || error
267 echo "== touch .../f ; ls -l ... ====================== test 20"
277 $CHECKSTAT -a $DIR/f || error
282 echo '== write to dangling link ======================== test 21'
284 [ -f $DIR/d21/dangle ] && rm -f $DIR/d21/dangle
285 ln -s dangle $DIR/d21/link
286 echo foo >> $DIR/d21/link
288 $CHECKSTAT -t link $DIR/d21/link || error
289 $CHECKSTAT -f -t file $DIR/d21/link || error
294 echo '== unpack tar archive as non-root user =========== test 22'
296 which sudo && chown 4711 $DIR/d22
297 SUDO=`which sudo 2> /dev/null` && SUDO="$SUDO -u #4711" || SUDO=""
298 echo '**** FIX THIS TEST ****'
300 $SUDO tar cf - /etc/hosts /etc/sysconfig/network | $SUDO tar xfC - $DIR/d22
302 $CHECKSTAT -t dir $DIR/d22/etc || error
303 [ -z "$SUDO" ] || $CHECKSTAT -u \#4711 $DIR/d22/etc || error
308 echo '== O_CREAT|O_EXCL in subdir ====================== test 23'
311 $TOEXCL -e $DIR/d23/f23 || error
316 echo '== rename sanity ================================= test24'
317 echo '-- same directory rename'
318 echo '-- test 24-R1: touch a ; rename a b'
321 mv $DIR/R1/f $DIR/R1/g
322 $CHECKSTAT -t file $DIR/R1/g || error
327 echo '-- test 24-R2: touch a b ; rename a b;'
330 mv $DIR/R2/f $DIR/R2/g
331 $CHECKSTAT -a $DIR/R2/f || error
332 $CHECKSTAT -t file $DIR/R2/g || error
337 echo '-- test 24-R3: mkdir a ; rename a b;'
340 mv $DIR/R3/f $DIR/R3/g
341 $CHECKSTAT -a $DIR/R3/f || error
342 $CHECKSTAT -t dir $DIR/R3/g || error
347 echo '-- test 24-R4: mkdir a b ; rename a b;'
350 perl -e "rename \"$DIR/R4/f\", \"$DIR/R4/g\";"
351 $CHECKSTAT -a $DIR/R4/f || error
352 $CHECKSTAT -t dir $DIR/R4/g || error
357 echo '-- cross directory renames --'
358 echo '-- test 24-R5: touch a ; rename a b'
361 mv $DIR/R5a/f $DIR/R5b/g
362 $CHECKSTAT -a $DIR/R5a/f || error
363 $CHECKSTAT -t file $DIR/R5b/g || error
368 echo '-- test 24-R6: touch a ; rename a b'
370 touch $DIR/R6a/f $DIR/R6b/g
371 mv $DIR/R6a/f $DIR/R6b/g
372 $CHECKSTAT -a $DIR/R6a/f || error
373 $CHECKSTAT -t file $DIR/R6b/g || error
378 echo '-- test 24-R7: touch a ; rename a b'
381 mv $DIR/R7a/f $DIR/R7b/g
382 $CHECKSTAT -a $DIR/R7a/f || error
383 $CHECKSTAT -t dir $DIR/R7b/g || error
388 echo '-- test 24-R8: touch a ; rename a b'
390 mkdir $DIR/R8a/f $DIR/R8b/g
391 perl -e "rename \"$DIR/R8a/f\", \"$DIR/R8b/g\";"
392 $CHECKSTAT -a $DIR/R8a/f || error
393 $CHECKSTAT -t dir $DIR/R8b/g || error
398 echo "-- rename error cases"
399 echo "-- test 24-R9 target error: touch f ; mkdir a ; rename f a"
403 perl -e "rename \"$DIR/R9/f\", \"$DIR/R9/a\";"
404 $CHECKSTAT -t file $DIR/R9/f || error
405 $CHECKSTAT -t dir $DIR/R9/a || error
406 $CHECKSTAT -a file $DIR/R9/a/f || error
411 echo "--test 24-R10 source does not exist"
413 perl -e "rename \"$DIR/R10/f\", \"$DIR/R10/g\""
414 $CHECKSTAT -t dir $DIR/R10 || error
415 $CHECKSTAT -a $DIR/R10/f || error
416 $CHECKSTAT -a $DIR/R10/g || error
421 echo '== symlink sanity ================================ test25'
422 echo "--test 25.1 create file in symlinked directory"
430 echo "--test 25.2 lookup file in symlinked directory"
431 $CHECKSTAT -t file $DIR/s25/foo
436 echo "--test 26 multiple component symlink"
439 ln -s d26/d26-2 $DIR/s26
445 echo "--test 26.1 multiple component symlink at the end of a lookup"
446 ln -s d26/d26-2/foo $DIR/s26-2
452 echo "--test 26.2 a chain of symlinks"
455 ln -s d26.2 $DIR/s26.2-1
456 ln -s s26.2-1 $DIR/s26.2-2
457 ln -s s26.2-2 $DIR/s26.2-3
458 chmod 0666 $DIR/s26.2-3/foo
463 # recursive symlinks (bug 439)
464 echo "--test 26.3 create multiple component recursive symlink"
465 ln -s d26-3/foo $DIR/d26-3
470 echo "--test 26.3 unlink multiple component recursive symlink"
476 echo '== stripe sanity ================================= test27'
477 echo "--test 27.1 create one stripe"
479 $LSTRIPE $DIR/d27/f0 8192 0 1
480 $CHECKSTAT -t file $DIR/d27/f0
481 echo "--test 27.2 write to one stripe file"
482 cp /etc/hosts $DIR/d27/f0
485 echo "--test 27.3 create two stripe file f01"
486 $LSTRIPE $DIR/d27/f01 8192 0 2
487 echo "--test 27.4 write to two stripe file file f01"
488 dd if=/dev/zero of=$DIR/d27/f01 bs=4k count=4
491 echo "--test 27.5 create file with default settings"
492 $LSTRIPE $DIR/d27/fdef 0 -1 0
493 $CHECKSTAT -t file $DIR/d27/fdef
494 #dd if=/dev/zero of=$DIR/d27/fdef bs=4k count=4
496 echo "--test 27.6 lstripe existing file (should return error)"
497 $LSTRIPE $DIR/d27/f12 8192 1 2
498 ! $LSTRIPE $DIR/d27/f12 8192 1 2
499 $CHECKSTAT -t file $DIR/d27/f12
500 #dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4
504 echo "--test 27.7 lstripe with bad stripe size (should return error on LOV)"
505 $LSTRIPE $DIR/d27/fbad 100 1 2 || /bin/true
506 dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4
511 echo "--test 27.8 lfind "
517 echo '== create/mknod/mkdir with bad file types ======== test28'
519 $CREATETEST $DIR/d28/ct || error
522 echo '== IT_GETATTR regression ======================== test29'
526 MDCDIR=${MDCDIR:-/proc/fs/lustre/ldlm/ldlm/MDC_MNT_localhost_mds1}
527 LOCKCOUNTORIG=`cat $MDCDIR/lock_count`
528 LOCKUNUSEDCOUNTORIG=`cat $MDCDIR/lock_unused_count`
530 LOCKCOUNTCURRENT=`cat $MDCDIR/lock_count`
531 LOCKUNUSEDCOUNTCURRENT=`cat $MDCDIR/lock_unused_count`
532 if [ $LOCKCOUNTCURRENT -gt $LOCKCOUNTORIG ] || [ $LOCKUNUSEDCOUNTCURRENT -gt $LOCKUNUSEDCOUNTORIG ]; then
539 echo '== cleanup ============================================='
540 rm -r $DIR/[Rdfs][1-9]*
542 echo '======================= finished ======================='