3 # Run select tests by setting ONLY, or as arguments to the script.
4 # Skip specific tests by setting EXCEPT.
6 # e.g. ONLY="22 23" or ONLY="`seq 32 39`" or EXCEPT="31"
10 ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-"34 35"} # bugs 1365 and 1360 respectively
13 PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH
15 CHECKSTAT=${CHECKSTAT:-"./checkstat -v"}
16 CREATETEST=${CREATETEST:-createtest}
18 LSTRIPE=${LSTRIPE:-lstripe}
20 MCREATE=${MCREATE:-mcreate}
21 TOEXCL=${TOEXCL:-toexcl}
22 TRUNCATE=${TRUNCATE:-truncate}
24 if [ $UID -ne 0 ]; then
28 RUNAS_ID=${RUNAS_ID:-500}
29 RUNAS=${RUNAS:-"runas -u $RUNAS_ID"}
32 MOUNT=${MOUNT:-/mnt/lustre}
40 sh llmountcleanup.sh > /dev/null || exit 20
46 sh llrmount.sh > /dev/null || exit 10
53 lctl mark "$*" || true
57 if ! mount | grep -q $MOUNT; then
69 if [ "`echo $1 | grep '\<'$O'[a-z]*\>'`" ]; then
77 for X in $EXCEPT $ALWAYS_EXCEPT; do
78 if [ "`echo $1 | grep '\<'$X'[a-z]*\>'`" ]; then
79 echo "skipping excluded test $1"
83 if [ -z "$ONLY" ]; then
98 if ! mount | grep $MOUNT; then
103 echo preparing for tests involving mounts
104 EXT2_DEV=/tmp/SANITY.LOOP
105 dd if=/dev/zero of=$EXT2_DEV bs=1k seek=1000 count=1 > /dev/null
106 mke2fs -F $EXT2_DEV > /dev/null
110 $CHECKSTAT -t file $DIR/f || error
112 $CHECKSTAT -a $DIR/f || error
114 run_test 0 "touch .../f ; rm .../f ============================="
119 $CHECKSTAT -t dir $DIR/d1/d2 || error
121 run_test 1a "mkdir .../d1; mkdir .../d1/d2 ====================="
126 $CHECKSTAT -a $DIR/d1 || error
128 run_test 1b "rmdir .../d1/d2; rmdir .../d1 ====================="
133 $CHECKSTAT -t file $DIR/d2/f || error
135 run_test 2a "mkdir .../d2; touch .../d2/f ======================"
139 $CHECKSTAT -a $DIR/d2 || error
141 run_test 2b "rm -r .../d2; touch .../d2/f ======================"
145 $CHECKSTAT -t dir $DIR/d3 || error
147 run_test 3a "mkdir .../d3 ======================================"
151 $CHECKSTAT -t file $DIR/d3/f || error
153 run_test 3b "touch .../d3/f ===================================="
157 $CHECKSTAT -a $DIR/d3 || error
159 run_test 3c "rm -r .../d3 ======================================"
163 $CHECKSTAT -t dir $DIR/d4 || error
165 run_test 4a "mkdir .../d4 ======================================"
169 $CHECKSTAT -t dir $DIR/d4/d2 || error
171 run_test 4b "mkdir .../d4/d2 ==================================="
176 chmod 0707 $DIR/d5/d2
177 $CHECKSTAT -t dir -p 0707 $DIR/d5/d2 || error
179 run_test 5 "mkdir .../d5 .../d5/d2; chmod .../d5/d2 ============"
184 $CHECKSTAT -t file -p 0666 $DIR/f6 || error
186 run_test 6 "touch .../f6; chmod .../f6 ========================="
192 $CHECKSTAT -t file -p 0666 $DIR/d7/f || error
194 run_test 7a "mkdir .../d7; mcreate .../d7/f; chmod .../d7/f ===="
198 echo -n foo > $DIR/d7/f2
199 [ "`cat $DIR/d7/f2`" = "foo" ] || error
200 $CHECKSTAT -t file -s 3 $DIR/d7/f2 || error
202 run_test 7b "mkdir .../d7; mcreate d7/f2; echo foo > d7/f2 ====="
208 $CHECKSTAT -t file -p 0666 $DIR/d8/f || error
210 run_test 8 "mkdir .../d8; touch .../d8/f; chmod .../d8/f ======="
216 $CHECKSTAT -t dir $DIR/d9/d2/d3 || error
218 run_test 9 "mkdir .../d9 .../d9/d2 .../d9/d2/d3 ================"
224 $CHECKSTAT -t file $DIR/d10/d2/f || error
226 run_test 10 "mkdir .../d10 .../d10/d2; touch .../d10/d2/f ======"
231 chmod 0666 $DIR/d11/d2
232 chmod 0705 $DIR/d11/d2
233 $CHECKSTAT -t dir -p 0705 $DIR/d11/d2 || error
235 run_test 11 "mkdir .../d11 d11/d2; chmod .../d11/d2 ============"
240 chmod 0666 $DIR/d12/f
241 chmod 0654 $DIR/d12/f
242 $CHECKSTAT -t file -p 0654 $DIR/d12/f || error
244 run_test 12 "touch .../d12/f; chmod .../d12/f .../d12/f ========"
248 dd if=/dev/zero of=$DIR/d13/f count=10
250 $CHECKSTAT -t file -s 0 $DIR/d13/f || error
252 run_test 13 "creat .../d13/f; dd .../d13/f; > .../d13/f ========"
258 $CHECKSTAT -a $DIR/d14/f || error
260 run_test 14 "touch .../d14/f; rm .../d14/f; rm .../d14/f ======="
265 mv $DIR/d15/f $DIR/d15/f2
266 $CHECKSTAT -t file $DIR/d15/f2 || error
268 run_test 15 "touch .../d15/f; mv .../d15/f .../d15/f2 =========="
274 $CHECKSTAT -a $DIR/d16/f || error
276 run_test 16 "touch .../d16/f; rm -rf .../d16/f ================="
281 ln -s $DIR/d17/f $DIR/d17/l-exist
283 $CHECKSTAT -l $DIR/d17/f $DIR/d17/l-exist || error
284 $CHECKSTAT -f -t f $DIR/d17/l-exist || error
286 $CHECKSTAT -a $DIR/l-exist || error
288 run_test 17a "symlinks: create, remove (real) =================="
291 ln -s no-such-file $DIR/d17/l-dangle
293 $CHECKSTAT -l no-such-file $DIR/d17/l-dangle || error
294 $CHECKSTAT -fa $DIR/d17/l-dangle || error
296 $CHECKSTAT -a $DIR/l-dangle || error
298 run_test 17b "symlinks: create, remove (dangling) =============="
304 run_test 18 "touch .../f ; ls ... =============================="
310 $CHECKSTAT -a $DIR/f || error
312 run_test 19 "touch .../f ; ls -l ... ==========================="
324 $CHECKSTAT -a $DIR/f || error
326 run_test 20 "touch .../f ; ls -l ... ==========================="
330 [ -f $DIR/d21/dangle ] && rm -f $DIR/d21/dangle
331 ln -s dangle $DIR/d21/link
332 echo foo >> $DIR/d21/link
334 $CHECKSTAT -t link $DIR/d21/link || error
335 $CHECKSTAT -f -t file $DIR/d21/link || error
337 run_test 21 "write to dangling link ============================"
341 chown $RUNAS_ID $DIR/d22
342 # Tar gets pissy if it can't access $PWD *sigh*
344 $RUNAS tar cf - /etc/hosts /etc/sysconfig/network | \
345 $RUNAS tar xfC - $DIR/d22)
347 $CHECKSTAT -t dir $DIR/d22/etc || error
348 $CHECKSTAT -u \#$RUNAS_ID $DIR/d22/etc || error
350 run_test 22 "unpack tar archive as non-root user ==============="
355 $TOEXCL -e $DIR/d23/f23 || error
357 run_test 23 "O_CREAT|O_EXCL in subdir =========================="
360 echo '============ rename sanity ================================='
361 echo '-- same directory rename'
364 mv $DIR/R1/f $DIR/R1/g
365 $CHECKSTAT -t file $DIR/R1/g || error
367 run_test 24a "touch .../R1/f; rename .../R1/f .../R1/g ========="
372 mv $DIR/R2/f $DIR/R2/g
373 $CHECKSTAT -a $DIR/R2/f || error
374 $CHECKSTAT -t file $DIR/R2/g || error
376 run_test 24b "touch .../R2/{f,g}; rename .../R2/f .../R2/g ====="
381 mv $DIR/R3/f $DIR/R3/g
382 $CHECKSTAT -a $DIR/R3/f || error
383 $CHECKSTAT -t dir $DIR/R3/g || error
385 run_test 24c "mkdir .../R3/f; rename .../R3/f .../R3/g ========="
390 perl -e "rename \"$DIR/R4/f\", \"$DIR/R4/g\";"
391 $CHECKSTAT -a $DIR/R4/f || error
392 $CHECKSTAT -t dir $DIR/R4/g || error
394 run_test 24d "mkdir .../R4/{f,g}; rename .../R4/f .../R4/g ====="
397 echo '-- cross directory renames --'
400 mv $DIR/R5a/f $DIR/R5b/g
401 $CHECKSTAT -a $DIR/R5a/f || error
402 $CHECKSTAT -t file $DIR/R5b/g || error
404 run_test 24e "touch .../R5a/f; rename .../R5a/f .../R5b/g ======"
408 touch $DIR/R6a/f $DIR/R6b/g
409 mv $DIR/R6a/f $DIR/R6b/g
410 $CHECKSTAT -a $DIR/R6a/f || error
411 $CHECKSTAT -t file $DIR/R6b/g || error
413 run_test 24f "touch .../R6a/f R6b/g; mv .../R6a/f .../R6b/g ===="
418 mv $DIR/R7a/d $DIR/R7b/e
419 $CHECKSTAT -a $DIR/R7a/d || error
420 $CHECKSTAT -t dir $DIR/R7b/e || error
422 run_test 24g "mkdir .../R7a/d; rename .../R7a/d .../R5b/e ======"
426 mkdir $DIR/R8a/d $DIR/R8b/e
427 perl -e "rename \"$DIR/R8a/d\", \"$DIR/R8b/e\";"
428 $CHECKSTAT -a $DIR/R8a/d || error
429 $CHECKSTAT -t dir $DIR/R8b/e || error
431 run_test 24h "mkdir .../R8{a,b} R8a/{d,e}; mv .../R8a/d .../R8b/e"
434 echo "-- rename error cases"
438 perl -e "rename \"$DIR/R9/f\", \"$DIR/R9/a\";"
439 $CHECKSTAT -t file $DIR/R9/f || error
440 $CHECKSTAT -t dir $DIR/R9/a || error
441 $CHECKSTAT -a file $DIR/R9/a/f || error
443 run_test 24i "rename file to dir error: touch f ; mkdir a ; rename f a ====="
447 perl -e "rename \"$DIR/R10/f\", \"$DIR/R10/g\""
448 $CHECKSTAT -t dir $DIR/R10 || error
449 $CHECKSTAT -a $DIR/R10/f || error
450 $CHECKSTAT -a $DIR/R10/g || error
452 run_test 24j "source does not exist ============================"
455 echo '== symlink sanity ======================================='
458 touch $DIR/s25/foo || error
460 run_test 25a "create file in symlinked directory ==============="
463 $CHECKSTAT -t file $DIR/s25/foo || error
465 run_test 25b "lookup file in symlinked directory ==============="
470 ln -s d26/d26-2 $DIR/s26
471 touch $DIR/s26/foo || error
473 run_test 26a "multiple component symlink ======================="
476 ln -s d26/d26-2/foo $DIR/s26-2
477 touch $DIR/s26-2 || error
479 run_test 26b "multiple component symlink at end of lookup ======"
484 ln -s d26.2 $DIR/s26.2-1
485 ln -s s26.2-1 $DIR/s26.2-2
486 ln -s s26.2-2 $DIR/s26.2-3
487 chmod 0666 $DIR/s26.2-3/foo
489 run_test 26c "chain of symlinks ================================"
491 # recursive symlinks (bug 439)
493 ln -s d26-3/foo $DIR/d26-3
495 run_test 26d "create multiple component recursive symlink ======"
500 run_test 26e "unlink multiple component recursive symlink ======"
503 echo '== stripe sanity ========================================'
505 $LSTRIPE $DIR/d27/f0 8192 0 1
506 $CHECKSTAT -t file $DIR/d27/f0
508 log "test_27b: write to one stripe file ========================="
509 cp /etc/hosts $DIR/d27/f0
511 run_test 27a "one stripe file =================================="
514 $LSTRIPE $DIR/d27/f01 8192 0 2
516 log "test_27d: write to two stripe file file f01 ================"
517 dd if=/dev/zero of=$DIR/d27/f01 bs=4k count=4
519 run_test 27c "create two stripe file f01 ======================="
522 $LSTRIPE $DIR/d27/fdef 0 -1 0
523 $CHECKSTAT -t file $DIR/d27/fdef
524 #dd if=/dev/zero of=$DIR/d27/fdef bs=4k count=4
526 run_test 27d "create file with default settings ================"
529 $LSTRIPE $DIR/d27/f12 8192 1 2
530 $LSTRIPE $DIR/d27/f12 8192 1 2 && error
531 $CHECKSTAT -t file $DIR/d27/f12 || error
532 #dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4
534 run_test 27e "lstripe existing file (should return error) ======"
538 $LSTRIPE $DIR/d27/fbad 100 1 2 || true
539 dd if=/dev/zero of=$DIR/d27/f12 bs=4k count=4
541 run_test 27f "lstripe with bad stripe size (should return error on LOV)"
544 $MCREATE $DIR/d27/fnone || error
546 log "test 27.9: lfind ============================================"
549 run_test 27g "mcreate file without objects to test lfind ======="
553 $CREATETEST $DIR/d28/ct || error
555 run_test 28 "create/mknod/mkdir with bad file types ============"
562 MDCDIR=${MDCDIR:-/proc/fs/lustre/ldlm/ldlm/MDC_*}
563 LOCKCOUNTORIG=`cat $MDCDIR/lock_count`
564 LOCKUNUSEDCOUNTORIG=`cat $MDCDIR/lock_unused_count`
568 LOCKCOUNTCURRENT=`cat $MDCDIR/lock_count`
569 LOCKUNUSEDCOUNTCURRENT=`cat $MDCDIR/lock_unused_count`
570 if [ $LOCKCOUNTCURRENT -gt $LOCKCOUNTORIG ]; then
571 echo "CURRENT: $LOCKCOUNTCURRENT > $LOCKCOUNTORIG"
574 if [ $LOCKUNUSEDCOUNTCURRENT -gt $LOCKUNUSEDCOUNTORIG ]; then
575 echo "UNUSED: $LOCKUNUSEDCOUNTCURRENT > $LOCKUNUSEDCOUNTORIG"
579 run_test 29 "IT_GETATTR regression ============================"
586 run_test 30 "run binary from Lustre (execve) ==================="
589 ./openunlink $DIR/f31 $DIR/f31 || error
591 run_test 31 "open-unlink file =================================="
594 echo "== more mountpoints and symlinks ================="
595 [ -e $DIR/d32a ] && rm -fr $DIR/d32a
596 mkdir -p $DIR/d32a/ext2-mountpoint
597 mount -t ext2 -o loop $EXT2_DEV $DIR/d32a/ext2-mountpoint || error
598 $CHECKSTAT -t dir $DIR/d32a/ext2-mountpoint/.. || error
599 umount $DIR/d32a/ext2-mountpoint || error
601 run_test 32a "stat d32a/ext2-mountpoint/.. ====================="
604 [ -e $DIR/d32b ] && rm -fr $DIR/d32b
605 mkdir -p $DIR/d32b/ext2-mountpoint
606 mount -t ext2 -o loop $EXT2_DEV $DIR/d32b/ext2-mountpoint || error
607 ls -al $DIR/d32b/ext2-mountpoint/.. || error
608 umount $DIR/d32b/ext2-mountpoint || error
610 run_test 32b "open d32b/ext2-mountpoint/.. ====================="
613 [ -e $DIR/d32c ] && rm -fr $DIR/d32c
614 mkdir -p $DIR/d32c/ext2-mountpoint
615 mount -t ext2 -o loop $EXT2_DEV $DIR/d32c/ext2-mountpoint || error
616 mkdir -p $DIR/d32c/d2/test_dir
617 $CHECKSTAT -t dir $DIR/d32c/ext2-mountpoint/../d2/test_dir || error
618 umount $DIR/d32c/ext2-mountpoint || error
620 run_test 32c "stat d32c/ext2-mountpoint/../d2/test_dir ========="
623 [ -e $DIR/d32d ] && rm -fr $DIR/d32d
624 mkdir -p $DIR/d32d/ext2-mountpoint
625 mount -t ext2 -o loop $EXT2_DEV $DIR/d32d/ext2-mountpoint || error
626 mkdir -p $DIR/d32d/d2/test_dir
627 ls -al $DIR/d32d/ext2-mountpoint/../d2/test_dir || error
628 umount $DIR/d32d/ext2-mountpoint || error
630 run_test 32d "open d32d/ext2-mountpoint/../d2/test_dir =========="
633 [ -e $DIR/d32e ] && rm -fr $DIR/d32e
634 mkdir -p $DIR/d32e/tmp
635 TMP_DIR=$DIR/d32e/tmp
636 ln -s $DIR/d32e $TMP_DIR/symlink11
637 ln -s $TMP_DIR/symlink11 $TMP_DIR/../symlink01
638 $CHECKSTAT -t link $DIR/d32e/tmp/symlink11 || error
639 $CHECKSTAT -t link $DIR/d32e/symlink01 || error
641 run_test 32e "stat d32e/symlink->tmp/symlink->lustre-subdir ====="
644 [ -e $DIR/d32f ] && rm -fr $DIR/d32f
645 mkdir -p $DIR/d32f/tmp
646 TMP_DIR=$DIR/d32f/tmp
647 ln -s $DIR/d32f $TMP_DIR/symlink11
648 ln -s $TMP_DIR/symlink11 $TMP_DIR/../symlink01
649 ls $DIR/d32f/tmp/symlink11 || error
650 ls $DIR/d32f/symlink01 || error
652 run_test 32f "open d32f/symlink->tmp/symlink->lustre-subdir ====="
655 [ -e $DIR/d32g ] && rm -fr $DIR/d32g
656 [ -e $DIR/test_dir ] && rm -fr $DIR/test_dir
657 mkdir -p $DIR/test_dir
658 mkdir -p $DIR/d32g/tmp
659 TMP_DIR=$DIR/d32g/tmp
660 ln -s $DIR/test_dir $TMP_DIR/symlink12
661 ln -s $TMP_DIR/symlink12 $TMP_DIR/../symlink02
662 $CHECKSTAT -t link $DIR/d32g/tmp/symlink12 || error
663 $CHECKSTAT -t link $DIR/d32g/symlink02 || error
664 $CHECKSTAT -t dir -f $DIR/d32g/tmp/symlink12 || error
665 $CHECKSTAT -t dir -f $DIR/d32g/symlink02 || error
667 run_test 32g "stat d32g/symlink->tmp/symlink->lustre-subdir/test_dir"
670 [ -e $DIR/d32h ] && rm -fr $DIR/d32h
671 [ -e $DIR/test_dir ] && rm -fr $DIR/test_dir
672 mkdir -p $DIR/test_dir
673 mkdir -p $DIR/d32h/tmp
674 TMP_DIR=$DIR/d32h/tmp
675 ln -s $DIR/test_dir $TMP_DIR/symlink12
676 ln -s $TMP_DIR/symlink12 $TMP_DIR/../symlink02
677 ls $DIR/d32h/tmp/symlink12 || error
678 ls $DIR/d32h/symlink02 || error
680 run_test 32h "open d32h/symlink->tmp/symlink->lustre-subdir/test_dir"
683 [ -e $DIR/d32i ] && rm -fr $DIR/d32i
684 mkdir -p $DIR/d32i/ext2-mountpoint
685 mount -t ext2 -o loop $EXT2_DEV $DIR/d32i/ext2-mountpoint || error
686 touch $DIR/d32i/test_file
687 $CHECKSTAT -t file $DIR/d32i/ext2-mountpoint/../test_file || error
688 umount $DIR/d32i/ext2-mountpoint || error
690 run_test 32i "stat d32i/ext2-mountpoint/../test_file ============"
693 [ -e $DIR/d32j ] && rm -fr $DIR/d32j
694 mkdir -p $DIR/d32j/ext2-mountpoint
695 mount -t ext2 -o loop $EXT2_DEV $DIR/d32j/ext2-mountpoint || error
696 touch $DIR/d32j/test_file
697 cat $DIR/d32j/ext2-mountpoint/../test_file || error
698 umount $DIR/d32j/ext2-mountpoint || error
700 run_test 32j "open d32j/ext2-mountpoint/../test_file ============"
703 [ -e $DIR/d32k ] && rm -fr $DIR/d32k
704 mkdir -p $DIR/d32k/ext2-mountpoint
705 mount -t ext2 -o loop $EXT2_DEV $DIR/d32k/ext2-mountpoint
706 mkdir -p $DIR/d32k/d2
707 touch $DIR/d32k/d2/test_file || error
708 $CHECKSTAT -t file $DIR/d32k/ext2-mountpoint/../d2/test_file || error
709 umount $DIR/d32k/ext2-mountpoint || error
711 run_test 32k "stat d32k/ext2-mountpoint/../d2/test_file ========="
714 [ -e $DIR/d32l ] && rm -fr $DIR/d32l
715 mkdir -p $DIR/d32l/ext2-mountpoint
716 mount -t ext2 -o loop $EXT2_DEV $DIR/d32l/ext2-mountpoint || error
717 mkdir -p $DIR/d32l/d2
718 touch $DIR/d32l/d2/test_file
719 cat $DIR/d32l/ext2-mountpoint/../d2/test_file || error
720 umount $DIR/d32l/ext2-mountpoint || error
722 run_test 32l "open d32l/ext2-mountpoint/../d2/test_file ========="
725 [ -e $DIR/d32m ] && rm -fr $DIR/d32m
726 mkdir -p $DIR/d32m/tmp
727 TMP_DIR=$DIR/d32m/tmp
728 ln -s $DIR $TMP_DIR/symlink11
729 ln -s $TMP_DIR/symlink11 $TMP_DIR/../symlink01
730 $CHECKSTAT -t link $DIR/d32m/tmp/symlink11 || error
731 $CHECKSTAT -t link $DIR/d32m/symlink01 || error
733 run_test 32m "stat d32m/symlink->tmp/symlink->lustre-root ======="
736 [ -e $DIR/d32n ] && rm -fr $DIR/d32n
737 mkdir -p $DIR/d32n/tmp
738 TMP_DIR=$DIR/d32n/tmp
739 ln -s $DIR $TMP_DIR/symlink11
740 ln -s $TMP_DIR/symlink11 $TMP_DIR/../symlink01
741 ls -l $DIR/d32n/tmp/symlink11 || error
742 ls -l $DIR/d32n/symlink01 || error
744 run_test 32n "open d32n/symlink->tmp/symlink->lustre-root ======="
747 [ -e $DIR/d32o ] && rm -fr $DIR/d32o
748 [ -e $DIR/test_file ] && rm -fr $DIR/test_file
750 mkdir -p $DIR/d32o/tmp
751 TMP_DIR=$DIR/d32o/tmp
752 ln -s $DIR/test_file $TMP_DIR/symlink12
753 ln -s $TMP_DIR/symlink12 $TMP_DIR/../symlink02
754 $CHECKSTAT -t link $DIR/d32o/tmp/symlink12 || error
755 $CHECKSTAT -t link $DIR/d32o/symlink02 || error
756 $CHECKSTAT -t file -f $DIR/d32o/tmp/symlink12 || error
757 $CHECKSTAT -t file -f $DIR/d32o/symlink02 || error
759 run_test 32o "stat d32o/symlink->tmp/symlink->lustre-root/test_file"
762 [ -e $DIR/d32p ] && rm -fr $DIR/d32p
763 [ -e $DIR/test_file ] && rm -fr $DIR/test_file
765 mkdir -p $DIR/d32p/tmp
766 TMP_DIR=$DIR/d32p/tmp
767 ln -s $DIR/test_file $TMP_DIR/symlink12
768 ln -s $TMP_DIR/symlink12 $TMP_DIR/../symlink02
769 cat $DIR/d32p/tmp/symlink12 || error
770 cat $DIR/d32p/symlink02 || error
772 run_test 32p "open d32p/symlink->tmp/symlink->lustre-root/test_file"
774 # chmod 444 /mnt/lustre/somefile
775 # open(/mnt/lustre/somefile, O_RDWR)
778 [ -e $DIR/test_33_file ] && rm -fr $DIR/test_33_file
779 touch $DIR/test_33_file
780 chmod 444 $DIR/test_33_file
781 chown $RUNAS_ID $DIR/test_33_file
782 $RUNAS openfile -f O_RDWR $DIR/test_33_file && error || true
784 run_test 33 "write file with mode 444 (should return error) ===="
791 run_test 34 "truncate file that has not been opened ============"
794 [ -e $DIR/test_35_file ] && rm -fr $DIR/test_35_file
795 cp /bin/sh $DIR/test_35_file
796 chmod 444 $DIR/test_35_file
797 chown $RUNAS_ID $DIR/test_35_file
798 $DIR/test_35_file && error
801 run_test 35 "exec file with mode 444 (should return error) ====="
804 log 36 "cvs operations ===================================="
805 mkdir -p $DIR/cvsroot
806 chown $RUNAS_ID $DIR/cvsroot
807 $RUNAS cvs -d $DIR/cvsroot init
809 run_test 36a "cvs init ========================================="
812 # on the LLNL clusters, runas will still pick up root's $TMP settings,
813 # which will not be writable for the runas user, and then you get a CVS
814 # error message with a corrupt path string (CVS bug) and panic.
815 # We're not using much space, so just stick it in /tmp, which is
823 $RUNAS cvs -d $DIR/cvsroot import -m "nomesg" reposname vtag rtag
828 run_test 36b "cvs import ======================================="
832 mkdir -p $DIR/reposname
833 chown $RUNAS_ID $DIR/reposname
834 $RUNAS cvs -d $DIR/cvsroot co reposname
836 run_test 36c "cvs checkout ====================================="
841 $RUNAS cvs add -m 'addmsg' foo36
843 run_test 36d "cvs add =========================================="
849 run_test 36e "cvs update ======================================="
851 # XXX change this: use a non root user
854 $RUNAS cvs commit -m 'nomsg' foo36
856 run_test 36f "cvs commit ======================================="
860 echo f > $DIR/dextra/fbugfile
861 mount -t ext2 -o loop /$EXT2_DEV $DIR/dextra
862 ls $DIR/dextra |grep "\<fbugfile\>" && error
864 rm -f DIR/dextra/fbugfile
866 run_test 37 "ls a mounted file system to check the old contents ====="
868 # open(file, O_DIRECTORY) will leak a request and not cleanup (bug 1501)
870 o_directory $DIR/test38
872 run_test 38 "open a regular file with O_DIRECTORY =============="
875 log "cleanup: ======================================================"
876 rm -r $DIR/[Rdfs][1-9]*
877 if [ "$I_MOUNTED" = "yes" ]; then
878 sh llmountcleanup.sh || error
881 echo '=========================== finished ==============================='