# These tests don't apply to mountconf
MOUNTCONFSKIP="9 10 11 12 13 13b 14 15"
-# bug number for skipped test: 2661 10510 12743
-ALWAYS_EXCEPT=" $CONF_SANITY_EXCEPT $MOUNTCONFSKIP 16 23 36"
+# bug number for skipped test: 2661 13709 10510 13710 12743
+ALWAYS_EXCEPT=" $CONF_SANITY_EXCEPT $MOUNTCONFSKIP 16 22 23 33 36"
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
SRCDIR=`dirname $0`
test_5e() {
start_ost
start_mds
- # give MDS a chance to connect to OSTs (bz 10476)
- sleep 5
#define OBD_FAIL_PTLRPC_DELAY_SEND 0x506
do_facet client "sysctl -w lustre.fail_loc=0x80000506"
run_test 21c "start mds between two osts, stop mds last"
test_22() {
- #reformat to remove all logs
- reformat
+ #reformat to remove all logs
+ reformat
start_mds
echo Client mount before any osts are in the logs
mount_client $MOUNT
echo Client mount with a running ost
start_ost
mount_client $MOUNT
- sleep 5 #bz10476
check_mount || return 41
pass
#run_test 23 "interrupt client during recovery mount delay"
test_24a() {
+ #set up fs1
+ gen_config
+ #set up fs2
local fs2mds_HOST=$mds_HOST
local fs2ost_HOST=$ost_HOST
-
- [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" ] && [ -b "$MDSDEV" ] && \
- log "mixed loopback and real device not working" && return
+ [ -n "$ost1_HOST" ] && fs2ost_HOST=$ost1_HOST
+ if [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" ]; then
+ do_facet $SINGLEMDS [ -b "$MDSDEV" ] && \
+ skip "mixed loopback and real device not working" && return
+ fi
local fs2mdsdev=${fs2mds_DEV:-${MDSDEV}_2}
local fs2ostdev=${fs2ost_DEV:-$(ostdevname 1)_2}
umount_client $MOUNT
# the MDS must remain up until last MDT
stop_mds
- MDS=$(do_facet mds "cat $LPROC/devices" | awk '($3 ~ "mdt" && $4 ~ "MDT") { print $4 }')
+ MDS=$(do_facet $SINGLEMDS "cat $LPROC/devices" | awk '($3 ~ "mdt" && $4 ~ "MDT") { print $4 }')
[ -z "$MDS" ] && error "No MDT" && return 8
umount $MOUNT2
stop fs2mds -f
test_24b() {
local fs2mds_HOST=$mds_HOST
- [ -z "$fs2mds_DEV" ] && [ -b "$MDSDEV" ] && \
- log "mixed loopback and real device not working" && return
+ if [ -z "$fs2mds_DEV" ]; then
+ do_facet $SINGLEMDS [ -b "$MDSDEV" ] && \
+ skip "mixed loopback and real device not working" && return
+ fi
local fs2mdsdev=${fs2mds_DEV:-${MDSDEV}_2}
- add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME}2 --mgs --reformat $fs2mdsdev || exit 10
+ add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME}2 --mgs --reformat $fs2mdsdev || exit 10
setup
start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS && return 2
cleanup || return 6
# there appears to be a lot of assumption here about loopback
# devices
# or maybe this test is just totally useless on a client-only system
+ [ "$mds_HOST" = "`hostname`" ] || { skip "remote MDS" && return 0; }
+ [ "$ost_HOST" = "`hostname`" -o "$ost1_HOST" = "`hostname`" ] || \
+ { skip "remote OST" && return 0; }
+
[ -z "$TUNEFS" ] && skip "No tunefs" && return
local DISK1_4=$LUSTRE/tests/disk1_4.zip
[ ! -r $DISK1_4 ] && skip "Cant find $DISK1_4, skipping" && return
# there appears to be a lot of assumption here about loopback
# devices
# or maybe this test is just totally useless on a client-only system
+ [ "$mds_HOST" = "`hostname`" ] || { skip "remote MDS" && return 0; }
+ [ "$ost_HOST" = "`hostname`" -o "$ost1_HOST" = "`hostname`" ] || \
+ { skip "remote OST" && return 0; }
+
[ -z "$TUNEFS" ] && skip "No tunefs" && return
local DISK1_4=$LUSTRE/tests/disk1_4.zip
[ ! -r $DISK1_4 ] && skip "Cant find $DISK1_4, skipping" && return
local FSNAME2=test1234
local fs2mds_HOST=$mds_HOST
local fs2ost_HOST=$ost_HOST
+ [ -n "$ost1_HOST" ] && fs2ost_HOST=$ost1_HOST
- [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" ] && [ -b "$MDSDEV" ] && \
- log "mixed loopback and real device not working" && return
+ if [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" ]; then
+ do_facet $SINGLEMDS [ -b "$MDSDEV" ] && \
+ skip "mixed loopback and real device not working" && return
+ fi
local fs2mdsdev=${fs2mds_DEV:-${MDSDEV}_2}
local fs2ostdev=${fs2ost_DEV:-$(ostdevname 1)_2}
add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME2} --reformat $fs2mdsdev || exit 10
- add fs2ost $OST_MKFS_OPTS --fsname=${FSNAME2} --index=8191 --mgsnode=`hostname`@tcp --reformat $fs2ostdev || exit 10
+ add fs2ost $OST_MKFS_OPTS --fsname=${FSNAME2} --index=8191 --mgsnode=$MGSNID --reformat $fs2ostdev || exit 10
start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS
start fs2ost $fs2ostdev $OST_MOUNT_OPTS
}
run_test 33 "Mount ost with a large index number"
+test_34() {
+ setup
+
+ do_facet client dd if=/dev/zero of=$MOUNT/24 bs=1024k count=1
+ # Drop lock cancelation reply during umount
+ #define OBD_FAIL_LDLM_CANCEL 0x304
+ do_facet client sysctl -w lustre.fail_loc=0x80000304
+ #sysctl -w lnet.debug=-1
+ umount_client $MOUNT
+ cleanup
+}
+run_test 34 "Drop cancel during umount"
+
+test_34a() {
+ setup
+ do_facet client multiop $DIR/file O_c &
+ sleep 0.500s
+ manual_umount_client
+ rc=$?
+ do_facet client killall -USR1 multiop
+ if [ $rc -eq 0 ]; then
+ error "umount not fail!"
+ fi
+ sleep 1
+ cleanup
+}
+run_test 34a "umount with opened file should be fail"
+
+
+test_34b() {
+ setup
+ touch $DIR/$tfile || return 1
+ stop_mds --force || return 2
+
+ manual_umount_client --force
+ rc=$?
+ if [ $rc -ne 0 ]; then
+ error "mtab after failed umount - rc $rc"
+ fi
+
+ cleanup
+ return 0
+}
+run_test 34b "force umount with failed mds should be normal"
+
+test_34c() {
+ setup
+ touch $DIR/$tfile || return 1
+ stop_ost --force || return 2
+
+ manual_umount_client --force
+ rc=$?
+ if [ $rc -ne 0 ]; then
+ error "mtab after failed umount - rc $rc"
+ fi
+
+ cleanup
+ return 0
+}
+run_test 34c "force umount with failed ost should be normal"
+
test_35() { # bug 12459
setup
log "Wait for RECONNECT_INTERVAL seconds (10s)"
sleep 10
- MSG="conf-sanity.sh test_33 `date +%F%kh%Mm%Ss`"
+ MSG="conf-sanity.sh test_35 `date +%F%kh%Mm%Ss`"
$LCTL clear
log "$MSG"
log "Stopping the MDT:"
local fs2mds_HOST=$mds_HOST
local fs2ost_HOST=$ost_HOST
local fs3ost_HOST=$ost_HOST
- rc=0
- [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" ] && [ -b "$MDSDEV" ] && \
- log "mixed loopback and real device not working" && return
+ [ -n "$ost1_HOST" ] && fs2ost_HOST=$ost1_HOST && fs3ost_HOST=$ost1_HOST
+ rc=0
+ if [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" -o -z "$fs3ost_DEV" ]; then
+ do_facet $SINGLEMDS [ -b "$MDSDEV" ] && \
+ skip "mixed loopback and real device not working" && return
+ fi
[ $OSTCOUNT -lt 2 ] && skip "skipping test for single OST" && return
+ [ $(grep -c obdfilter $LPROC/devices) -eq 0 ] &&
+ skip "skipping test for remote OST" && return
+
local fs2mdsdev=${fs2mds_DEV:-${MDSDEV}_2}
local fs2ostdev=${fs2ost_DEV:-$(ostdevname 1)_2}
local fs3ostdev=${fs3ost_DEV:-$(ostdevname 2)_2}
add fs2mds $MDS_MKFS_OPTS --fsname=${FSNAME2} --reformat $fs2mdsdev || exit 10
- add fs2ost $OST_MKFS_OPTS --mkfsoptions='-b1024' --fsname=${FSNAME2} --mgsnode=`hostname`@tcp --reformat $fs2ostdev || exit 10
- add fs3ost $OST_MKFS_OPTS --mkfsoptions='-b4096' --fsname=${FSNAME2} --mgsnode=`hostname`@tcp --reformat $fs3ostdev || exit 10
+ add fs2ost $OST_MKFS_OPTS --mkfsoptions='-b1024' --fsname=${FSNAME2} --mgsnode=$MGSNID --reformat $fs2ostdev || exit 10
+ add fs3ost $OST_MKFS_OPTS --mkfsoptions='-b4096' --fsname=${FSNAME2} --mgsnode=$MGSNID --reformat $fs3ostdev || exit 10
start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS
start fs2ost $fs2ostdev $OST_MOUNT_OPTS
mkdir -p $MOUNT2
mount -t lustre $MGSNID:/${FSNAME2} $MOUNT2 || return 1
+ sleep 5 # until 11778 fixed
+
dd if=/dev/zero of=$MOUNT2/$tfile bs=1M count=7 || return 2
- [ $(grep -c obdfilter $LPROC/devices) -eq 0 ] &&
- skip "skipping test for remote OST" && return
+
BKTOTAL=`awk 'BEGIN{total=0}; {total+=$1}; END{print total}' \
$LPROC/obdfilter/*/kbytestotal`
BKFREE=`awk 'BEGIN{free=0}; {free+=$1}; END{print free}' \