X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fconf-sanity.sh;h=ffd5b3033999062d3510fa6993fa75341989de0a;hb=2f8c65486df47bfe38068345603172d90c0861e6;hp=0d8cbb1dd66ced1b3dc76f20d111f00a699a43a9;hpb=c39489126f88bb5b30643ebb11c72fbe9f9d2241;p=fs%2Flustre-release.git diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh index 0d8cbb1..ffd5b30 100644 --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -46,9 +46,10 @@ start_mds() { echo "start mds1 service on `facet_active_host mds1`" start mds1 --reformat $MDSLCONFARGS || return 94 } + stop_mds() { echo "stop mds1 service on `facet_active_host mds1`" - stop mds1 $@ || return 97 + stop mds1 $@ || return 97 } start_ost() { @@ -58,7 +59,7 @@ start_ost() { stop_ost() { echo "stop ost service on `facet_active_host ost`" - stop ost $@ || return 98 + stop ost $@ || return 98 } mount_client() { @@ -86,7 +87,7 @@ setup() { cleanup() { umount_client $MOUNT || return 200 - stop_mds || return 201 + stop_mds || return 201 stop_ost || return 202 # catch case where these return just fine, but modules are still not unloaded /sbin/lsmod | grep -q portals @@ -115,7 +116,9 @@ build_test_filter #create single point mountpoint gen_config - +start_krb5_kdc || exit 1 +start_lsvcgssd || return 2 +start_lgssd || return 3 test_0() { start_ost @@ -182,7 +185,17 @@ test_5() { # 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" @@ -191,16 +204,21 @@ test_5() { wait $UMOUNT_PID # 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 @@ -209,16 +227,16 @@ test_5b() { [ -d $MOUNT ] || mkdir -p $MOUNT $LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null - llmount $mds_HOST://mds1_svc/client_facet $MOUNT && exit 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_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 } @@ -230,15 +248,15 @@ test_5c() { [ -d $MOUNT ] || mkdir -p $MOUNT $LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null - llmount $mds_HOST://wrong_mds1_svc/client_facet $MOUNT && 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_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 } @@ -251,7 +269,7 @@ test_5d() { [ -d $MOUNT ] || mkdir -p $MOUNT $LCONF --nosetup --node client_facet $XMLCONFIG > /dev/null - llmount $mds_HOST://mds1_svc/client_facet $MOUNT || return 1 + llmount -o nettype=$NETTYPE $mds_HOST://mds1_svc/client_facet $MOUNT || return 1 umount $MOUNT || return 2 # cleanup client modules @@ -335,18 +353,18 @@ test_9() { # check lconf --ptldebug/subsystem overriding lmc --ptldebug/subsystem start_ost start_mds - CHECK_PTLDEBUG="`do_facet mds1 cat /proc/sys/portals/debug`" + CHECK_PTLDEBUG="`do_facet mds1 sysctl portals.debug | cut -d= -f2`" if [ $CHECK_PTLDEBUG = "3" ]; then echo "lconf --debug success" else echo "lconf --debug: want 3, have $CHECK_PTLDEBUG" return 1 fi - CHECK_SUBSYSTEM="`do_facet mds1 cat /proc/sys/portals/subsystem_debug`" - if [ $CHECK_SUBSYSTEM = "20" ]; then + CHECK_SUBSYS="`do_facet mds1 sysctl portals.subsystem_debug|cut -d= -f2`" + if [ $CHECK_SUBSYS = "20" ]; then echo "lconf --subsystem success" else - echo "lconf --subsystem: want 20, have $CHECK_SUBSYSTEM" + echo "lconf --subsystem: want 20, have $CHECK_SUBSYS" return 1 fi mount_client $MOUNT @@ -595,7 +613,7 @@ test_15() { [ ! `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" @@ -613,6 +631,12 @@ test_15() { } 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" @@ -623,7 +647,7 @@ test_16() { 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 @@ -645,24 +669,49 @@ test_16() { 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="" + test "x$EXPECTEDLOGSMODE" = "x" && EXPECTEDLOGSMODE="" + test "x$EXPECTEDPENDINGMODE" = "x" && EXPECTEDPENDINGMODE="" + + # 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 } @@ -722,4 +771,7 @@ test_18() { } run_test 18 "check lconf creates large journals" +stop_lgssd +stop_lsvcgssd + equals_msg "Done"