start_mds() {
echo "start mds1 service on `facet_active_host mds1`"
start mds1 --reformat $MDSLCONFARGS || return 94
+ start_lsvcgssd || return 501
}
+
stop_mds() {
echo "stop mds1 service on `facet_active_host mds1`"
- stop mds1 $@ || return 97
+ stop mds1 $@ || return 97
+ stop_lsvcgssd
}
start_ost() {
stop_ost() {
echo "stop ost service on `facet_active_host ost`"
- stop ost $@ || return 98
+ stop ost $@ || return 98
}
mount_client() {
local MOUNTPATH=$1
+ start_lgssd || return 502
echo "mount lustre on ${MOUNTPATH}....."
zconf_mount `hostname` $MOUNTPATH || return 96
}
local MOUNTPATH=$1
echo "umount lustre on ${MOUNTPATH}....."
zconf_umount `hostname` $MOUNTPATH || return 97
+ stop_lgssd
}
manual_umount_client(){
echo "manual umount lustre on ${MOUNTPATH}...."
do_facet client "umount $MOUNT"
+ stop_lgssd
}
setup() {
#create single point mountpoint
gen_config
+start_krb5_kdc || exit 1
test_0() {
# cleanup may return an error from the failed
# disconnects; for now I'll consider this successful
# if all the modules have unloaded.
- umount $MOUNT &
+
+ # as MDS is down, umount without -f may cause blocking
+ # and this test will never finish. Blocking is possible
+ # as umount may want to cancel locks with RPC's and these
+ # RPC's will wait forever, as pinger thread will try to
+ # recover failed import endlessly.
+ #
+ # Thus, main point is: nobody should expect umount finish
+ # quickly and cleanly without -f flag when MDS or OST is
+ # down for sure. --umka
+ umount -f $MOUNT &
UMOUNT_PID=$!
sleep 2
echo "killing umount"
kill -TERM $UMOUNT_PID
echo "waiting for umount to finish"
wait $UMOUNT_PID
+ stop_lgssd
# cleanup client modules
- $LCONF --cleanup --nosetup --node client_facet $XMLCONFIG > /dev/null
+ $LCONF --force --cleanup --nosetup --node client_facet $XMLCONFIG > /dev/null
# stop_mds is a no-op here, and should not fail
- stop_mds || return 4
- stop_ost || return 5
+ stop_mds || return 4
+
+ # this should have --force flag specified, as umount -f
+ # will skip disconnect phase and thus OST will have one
+ # extra refcount what will cause class_cleanup() failure
+ # if --force is not specified. --umka
+ stop_ost --force || return 5
lsmod | grep -q portals && return 6
return 0
}
-run_test 5 "force cleanup mds, then cleanup"
+run_test 5 "force cleanup mds, then cleanup --force"
test_5b() {
start_ost
[ -d $MOUNT ] || mkdir -p $MOUNT
$LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null
- llmount $mds_HOST://mds1_svc/client_facet $MOUNT && exit 1
+ start_lgssd || return 1
+ llmount -o nettype=$NETTYPE $mds_HOST://mds_svc/client_facet $MOUNT && exit 2
# cleanup client modules
$LCONF --cleanup --nosetup --node client_facet $XMLCONFIG > /dev/null
+ stop_lgssd
# stop_mds is a no-op here, and should not fail
- stop_mds || return 2
- stop_ost || return 3
+ stop_mds || return 3
+ stop_ost || return 4
- lsmod | grep -q portals && return 4
+ lsmod | grep -q portals && return 5
return 0
}
[ -d $MOUNT ] || mkdir -p $MOUNT
$LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null
- llmount $mds_HOST://wrong_mds1_svc/client_facet $MOUNT && return 1
+ start_lgssd || return 1
+ llmount -o nettype=$NETTYPE $mds_HOST://wrong_mds_svc/client_facet $MOUNT && return 2
# cleanup client modules
$LCONF --cleanup --nosetup --node client_facet $XMLCONFIG > /dev/null
+ stop_lgssd
- stop_mds || return 2
- stop_ost || return 3
+ stop_mds || return 3
+ stop_ost || return 4
- lsmod | grep -q portals && return 4
+ lsmod | grep -q portals && return 5
return 0
}
[ -d $MOUNT ] || mkdir -p $MOUNT
$LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null
+ start_lgssd || return 1
llmount $mds_HOST://mds1_svc/client_facet $MOUNT || return 1
umount $MOUNT || return 2
# cleanup client modules
$LCONF --cleanup --nosetup --node client_facet $XMLCONFIG > /dev/null
+ stop_lgssd
stop_mds || return 3
[ ! `cp $LUSTRE/utils/llmount $MOUNTLUSTRE` ] || return $?
do_node `hostname` mkdir -p $MOUNT 2> /dev/null
# load llite module on the client if it isn't in /lib/modules
- do_node `hostname` lconf --nosetup --node client_facet $XMLCONFIG
+ do_node `hostname` $LCONF --nosetup --node client_facet $XMLCONFIG
do_node `hostname` mount -t lustre -o nettype=$NETTYPE \
`facet_active_host mds1`:/mds1_svc/client_facet $MOUNT ||return $?
echo "mount lustre on $MOUNT with $MOUNTLUSTRE: success"
}
run_test 15 "zconf-mount without /sbin/mount.lustre (should return error)"
+is_digit() {
+ local value=$1
+ echo $value | grep -q "^[[:digit:]]*$"
+ return $?
+}
+
test_16() {
TMPMTPT="/mnt/conf16"
mount_client $MOUNT
check_mount || return 41
cleanup || return $?
- fi
+ fi
echo "change the mode of $MDSDEV/OBJECTS,LOGS,PENDING to 555"
[ -d $TMPMTPT ] || mkdir -p $TMPMTPT
EXPECTEDLOGSMODE=`debugfs -R "stat LOGS" $MDSDEV 2> /dev/null | awk '/Mode: /{print $6}'`
EXPECTEDPENDINGMODE=`debugfs -R "stat PENDING" $MDSDEV 2> /dev/null | awk '/Mode: /{print $6}'`
- if [ $EXPECTEDOBJECTSMODE = "0777" ]; then
- echo "Success:Lustre change the mode of OBJECTS correctly"
+ # check if values are empty
+ test "x$EXPECTEDOBJECTSMODE" = "x" && EXPECTEDOBJECTSMODE="<empty>"
+ test "x$EXPECTEDLOGSMODE" = "x" && EXPECTEDLOGSMODE="<empty>"
+ test "x$EXPECTEDPENDINGMODE" = "x" && EXPECTEDPENDINGMODE="<empty>"
+
+ # check if values are valid digits
+ is_digit $EXPECTEDOBJECTSMODE || {
+ echo "Invalid OBJECTS mode obtained from debugfs: $EXPECTEDOBJECTSMODE"
+ return 42
+ }
+
+ is_digit $EXPECTEDLOGSMODE || {
+ echo "Invalid LOGS mode obtained from debugfs: $EXPECTEDLOGSMODE"
+ return 42
+ }
+
+ is_digit $EXPECTEDPENDINGMODE || {
+ echo "Invalid PINDING mode obtained from debugfs: $EXPECTEDPENDINGMODE"
+ return 42
+ }
+
+ # check if values are those we expected
+ if [ "x$EXPECTEDOBJECTSMODE" = "x0777" ]; then
+ echo "Success: Lustre change the mode of OBJECTS correctly"
else
echo "Error: Lustre does not change the mode of OBJECTS properly"
+ echo "Expected value: 0777, actual one: $EXPECTEDOBJECTSMODE"
return 1
fi
- if [ $EXPECTEDLOGSMODE = "0777" ]; then
- echo "Success:Lustre change the mode of LOGS correctly"
+ if [ "x$EXPECTEDLOGSMODE" = "x0777" ]; then
+ echo "Success: Lustre change the mode of LOGS correctly"
else
echo "Error: Lustre does not change the mode of LOGS properly"
+ echo "Expected value: 0777, actual one: $EXPECTEDLOGSMODE"
return 1
fi
- if [ $EXPECTEDPENDINGMODE = "0777" ]; then
- echo "Success:Lustre change the mode of PENDING correctly"
+ if [ "x$EXPECTEDPENDINGMODE" = "x0777" ]; then
+ echo "Success: Lustre change the mode of PENDING correctly"
else
echo "Error: Lustre does not change the mode of PENDING properly"
+ echo "Expected value: 0777, actual one: $EXPECTEDPENDINGMODE"
return 1
fi
}