MUNLINK=${MUNLINK:-munlink}
SOCKETSERVER=${SOCKETSERVER:-socketserver}
SOCKETCLIENT=${SOCKETCLIENT:-socketclient}
-IOPENTEST1=${IOPENTEST1:-iopentest1}
-IOPENTEST2=${IOPENTEST2:-iopentest2}
MEMHOG=${MEMHOG:-memhog}
DIRECTIO=${DIRECTIO:-directio}
ACCEPTOR_PORT=${ACCEPTOR_PORT:-988}
[ "$SLOW" = "no" ] && EXCEPT_SLOW="24o 24v 27m 36f 36g 36h 51b 51c 60c 63 64b 68 71 73 77f 78 101 103 115 120g 124b"
-SANITYLOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
FAIL_ON_ERROR=false
cleanup() {
exit 0
fi
-[ "$SANITYLOG" ] && rm -f $SANITYLOG || true
-
check_and_setup_lustre
DIR=${DIR:-$MOUNT}
}
run_test 29 "IT_GETATTR regression ============================"
-test_30() {
+test_30a() { # was test_30
+ cp `which ls` $DIR || cp /bin/ls $DIR
+ $DIR/ls / || error
+ rm $DIR/ls
+}
+run_test 30a "execute binary from Lustre (execve) =============="
+
+test_30b() {
cp `which ls` $DIR || cp /bin/ls $DIR
- $DIR/ls /
+ chmod go+rx $DIR/ls
+ $RUNAS $DIR/ls / || error
rm $DIR/ls
}
-run_test 30 "run binary from Lustre (execve) ==================="
+run_test 30b "execute binary from Lustre as non-root ==========="
+
+test_30c() { # b=22376
+ cp `which ls` $DIR || cp /bin/ls $DIR
+ chmod a-rw $DIR/ls
+ cancel_lru_locks mdc
+ cancel_lru_locks osc
+ $RUNAS $DIR/ls / || error
+ rm -f $DIR/ls
+}
+run_test 30c "execute binary from Lustre without read perms ===="
test_31a() {
$OPENUNLINK $DIR/f31 $DIR/f31 || error
sync
sleep 1
df $dir #make sure we get new statfs data
- local MDSFREE=$(do_facet $mymds lctl get_param -n osd.*MDT000$((num -1)).kbytesfree)
+ local MDSFREE=$(do_facet $mymds \
+ lctl get_param -n osd*.*MDT000$((num -1)).kbytesfree)
local MDCFREE=$(lctl get_param -n mdc.*MDT000$((num -1))-mdc-*.kbytesfree)
echo "opening files to create objects/EAs"
local FILE
sleep 1 #make sure we get new statfs data
df $dir
- local MDSFREE2=$(do_facet $mymds lctl get_param -n osd.*MDT000$((num -1)).kbytesfree)
+ local MDSFREE2=$(do_facet $mymds \
+ lctl get_param -n osd*.*MDT000$((num -1)).kbytesfree)
local MDCFREE2=$(lctl get_param -n mdc.*MDT000$((num -1))-mdc-*.kbytesfree)
if [ "$MDCFREE2" -lt "$((MDCFREE - 8))" ]; then
if [ "$MDSFREE" != "$MDSFREE2" ]; then
}
run_test 71 "Running dbench on lustre (don't segment fault) ===="
-test_72() { # bug 5695 - Test that on 2.6 remove_suid works properly
+test_72a() { # bug 5695 - Test that on 2.6 remove_suid works properly
check_kernel_version 43 || return 0
[ "$RUNAS_ID" = "$UID" ] && skip_env "RUNAS_ID = UID = $UID -- skipping" && return
true
rm -f $DIR/f72
}
-run_test 72 "Test that remove suid works properly (bug5695) ===="
+run_test 72a "Test that remove suid works properly (bug5695) ===="
+
+test_72b() { # bug 24226 -- keep mode setting when size is not changing
+ local perm
+
+ [ "$RUNAS_ID" = "$UID" ] && \
+ skip_env "RUNAS_ID = UID = $UID -- skipping" && return
+ [ "$RUNAS_ID" -eq 0 ] && \
+ skip_env "RUNAS_ID = 0 -- skipping" && return
+
+ # Check that testing environment is properly set up. Skip if not
+ FAIL_ON_ERROR=false check_runas_id_ret $RUNAS_ID $RUNAS_ID $RUNAS || {
+ skip_env "User $RUNAS_ID does not exist - skipping"
+ return 0
+ }
+ touch $DIR/${tfile}-f{g,u}
+ mkdir $DIR/${tfile}-d{g,u}
+ chmod 770 $DIR/${tfile}-{f,d}{g,u}
+ chmod g+s $DIR/${tfile}-{f,d}g
+ chmod u+s $DIR/${tfile}-{f,d}u
+ for perm in 777 2777 4777; do
+ $RUNAS chmod $perm $DIR/${tfile}-fg && error "S/gid file allowed improper chmod to $perm"
+ $RUNAS chmod $perm $DIR/${tfile}-fu && error "S/uid file allowed improper chmod to $perm"
+ $RUNAS chmod $perm $DIR/${tfile}-dg && error "S/gid dir allowed improper chmod to $perm"
+ $RUNAS chmod $perm $DIR/${tfile}-du && error "S/uid dir allowed improper chmod to $perm"
+ done
+ true
+}
+run_test 72b "Test that we keep mode setting if without file data changed (bug 24226)"
# bug 3462 - multiple simultaneous MDC requests
test_73() {
}
run_test 900 "umount should not race with any mgc requeue thread"
-log "cleanup: ======================================================"
+complete $(basename $0) $SECONDS
check_and_cleanup_lustre
if [ "$I_MOUNTED" != "yes" ]; then
lctl set_param debug="$OLDDEBUG" 2> /dev/null || true
fi
-
-echo '=========================== finished ==============================='
-[ -f "$SANITYLOG" ] && cat $SANITYLOG && grep -q FAIL $SANITYLOG && exit 1 || true
-echo "$0: completed"
+exit_status