Whamcloud - gitweb
LU-13503 mdc: allow setting max_mod_rpcs_in_flight larger
[fs/lustre-release.git] / lustre / tests / conf-sanity.sh
index b06db01..7cea4cb 100644 (file)
@@ -15,7 +15,7 @@ init_logging
 ALWAYS_EXCEPT="$CONF_SANITY_EXCEPT 32newtarball"
 
 # bug number for skipped test: LU-11915
-ALWAYS_EXCEPT="$ALWAYS_EXCEPT  110"
+ALWAYS_EXCEPT="$ALWAYS_EXCEPT  110 115"
 # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
 
 if $SHARED_KEY; then
@@ -113,6 +113,16 @@ start_mdt() {
        start $facet ${dev} $MDS_MOUNT_OPTS $@ || return 94
 }
 
+stop_mdt_no_force() {
+       local num=$1
+       local facet=mds$num
+       local dev=$(mdsdevname $num)
+       shift 1
+
+       echo "stop mds service on `facet_active_host $facet`"
+       stop $facet || return 97
+}
+
 stop_mdt() {
        local num=$1
        local facet=mds$num
@@ -757,12 +767,18 @@ test_21d() {
        start_mds || error "MDS start failed"
        wait_osc_import_state mds ost2 FULL
 
+       local zkeeper=${KEEP_ZPOOL}
+       stack_trap "KEEP_ZPOOL=$zkeeper" EXIT
+       KEEP_ZPOOL="true"
+
        stop_ost || error "Unable to stop OST1"
        stop_ost2 || error "Unable to stop OST2"
        stop_mds || error "Unable to stop MDS"
        stop_mgs
        #writeconf to remove all ost2 traces for subsequent tests
        writeconf_or_reformat
+       KEEP_ZPOOL="${zkeeper}"
+
        start_mgs || error "unable to start MGS"
 }
 run_test 21d "start mgs then ost and then mds"
@@ -1421,6 +1437,16 @@ test_32newtarball() {
        echo $T32_BLIMIT > $tmp/img/blimit
        echo $T32_ILIMIT > $tmp/img/ilimit
 
+       $MULTIOP /mnt/$FSNAME/orph_file Ouw_c&
+       pid=$!
+       sync
+       stop_mdt_no_force 1
+       debugfs -R "ls /PENDING" ${MDSDEV1:-$MDSDEV}
+       cp ${MDSDEV1:-$MDSDEV} $tmp/img
+       start_mdt 1
+       kill -s USR1 $pid
+       wait $pid
+
        stopall
 
        pushd $tmp/src
@@ -1434,7 +1460,6 @@ test_32newtarball() {
        uname -r >$tmp/img/kernel
        uname -m >$tmp/img/arch
 
-       mv ${MDSDEV1:-$MDSDEV} $tmp/img
        for num in $(seq 2 $MDSCOUNT); do
                local devname=$(mdsdevname $num)
                local facet=mds$num
@@ -2131,9 +2156,9 @@ t32_test() {
                        $LFS setdirstripe -D -c2 $tmp/mnt/lustre/striped_dir
 
                        pushd $tmp/mnt/lustre
-                       tar -cf - . --exclude=./striped_dir \
-                                   --exclude=./striped_dir_old \
-                                   --exclude=./remote_dir |
+                       tar -c --exclude=./striped_dir \
+                               --exclude=./striped_dir_old \
+                               --exclude=./remote_dir -f - .|
                                tar -xvf - -C striped_dir 1>/dev/null || {
                                error_noexit "cp to striped dir failed"
                                return 1
@@ -2312,6 +2337,19 @@ t32_test() {
                }
                shall_cleanup_lustre=false
        else
+               $MOUNT_CMD $nid:/$fsname $tmp/mnt/lustre || {
+                       error_noexit "Mounting the client"
+                       return 1
+               }
+
+               [[ $(do_facet mds1 pgrep orph_.*-MDD | wc -l) == 0 ]] ||
+                       error "MDD orphan cleanup thread not quit"
+
+               umount $tmp/mnt/lustre || {
+                       error_noexit "Unmounting the client"
+                       return 1
+               }
+
                if [[ "$dne_upgrade" != "no" ]] || $mdt2_is_available; then
                        $r $UMOUNT $tmp/mnt/mdt1 || {
                                error_noexit "Unmounting the MDT2"
@@ -2383,6 +2421,7 @@ test_32a() {
 
        t32_check
        for tarball in $tarballs; do
+               banner "testing $tarball upgrade"
                t32_test $tarball || let "rc += $?"
        done
        return $rc
@@ -2396,6 +2435,7 @@ test_32b() {
 
        t32_check
        for tarball in $tarballs; do
+               banner "testing $tarball upgrade with writeconf"
                t32_test $tarball writeconf || let "rc += $?"
        done
        return $rc
@@ -2411,8 +2451,9 @@ test_32c() {
        t32_check
        for tarball in $tarballs; do
                # Do not support 1_8 and 2_1 direct upgrade to DNE2 anymore */
-               echo $tarball | grep "1_8" && continue
-               echo $tarball | grep "2_1" && continue
+               [[ "$tarball" =~ "1_8" ]] && echo "skip $tarball" && continue
+               [[ "$tarball" =~ "2_1" ]] && echo "skip $tarball" && continue
+               banner "testing $tarball upgrade with DNE"
                load_modules
                dne_upgrade=yes t32_test $tarball writeconf || rc=$?
        done
@@ -2427,6 +2468,7 @@ test_32d() {
 
        t32_check
        for tarball in $tarballs; do
+               banner "testing $tarball upgrade with ff convert"
                ff_convert=yes t32_test $tarball || rc=$?
        done
        return $rc
@@ -2443,8 +2485,9 @@ test_32e() {
 
        t32_check
        for tarball in $tarballs; do
-               echo $tarball | grep "2_9" || continue
+               [[ "$tarball" =~ "2_9" ]] || continue
                #load_modules
+               banner "testing $tarball upgrade with DoM"
                dom_upgrade=yes t32_test $tarball writeconf || let "rc += $?"
        done
        return $rc
@@ -3506,16 +3549,13 @@ test_48() { # bz-17636 LU-7473
        # LOV EA, and so on. These EA will use some EA space that is shared by
        # ACL entries. So here we only check some reasonable ACL entries count,
        # instead of the max number that is calculated from the max_ea_size.
-       if [ "$MDS1_VERSION" -lt $(version_code 2.8.57) ];
-       then
+       if [ "$MDS1_VERSION" -lt $(version_code 2.8.57) ]; then
                count=28        # hard coded of RPC protocol
-       elif [ "$mds1_FSTYPE" != ldiskfs ]; then
-               count=4000      # max_num 4091 max_ea_size = ~65536
-       elif ! large_xattr_enabled; then
-               count=450       # max_num 497 max_ea_size = 4012
-       else
+       elif large_xattr_enabled; then
                count=4500      # max_num 8187 max_ea_size = 65452
-                               # not create too much (>5000) to save test time
+                               # not create too many (4500) to save test time
+       else
+               count=450       # max_num 497 max_ea_size = 4012
        fi
 
        echo "It is expected to hold at least $count ACL entries"
@@ -5859,22 +5899,15 @@ test_81() { # LU-4665
 
        # Check max_easize.
        local max_easize=$($LCTL get_param -n llite.*.max_easize)
-       if [ $MDS1_VERSION -lt $(version_code 2.12.51) ]
-       then
-               [[ $max_easize -eq 128 ]] ||
-                       error "max_easize is $max_easize, should be 128 bytes"
+       # 65452 is XATTR_SIZE_MAX less ldiskfs ea overhead
+       if large_xattr_enabled; then
+               [[ $max_easize -ge 65452 ]] ||
+                       error "max_easize is $max_easize, should be at least 65452 bytes"
        else
                # LU-11868
-               # 4012 is 4096 - ldiskfs ea overhead
+               # 4012 is 4096 less ldiskfs ea overhead
                [[ $max_easize -ge 4012 ]] ||
-               error "max_easize is $max_easize, should be at least 4012 bytes"
-
-               # 65452 is XATTR_SIZE_MAX - ldiskfs ea overhead
-               if large_xattr_enabled;
-               then
-                       [[ $max_easize -ge 65452 ]] ||
-                       error "max_easize is $max_easize, should be at least 65452 bytes"
-               fi
+                       error "max_easize is $max_easize, should be at least 4012 bytes"
        fi
 
        restore_ostindex
@@ -6127,7 +6160,7 @@ test_83() {
                error "format ost1 error"
 
        if ! test -b $dev; then
-               mnt_opts=$(csa_add "$OST_MOUNT_OPTS" -o loop)
+               mnt_opts=$(csa_add "$OST_MOUNT_FS_OPTS" -o loop)
        fi
        echo "mnt_opts $mnt_opts"
        do_facet ost1 mount -t "$ost1_FSTYPE" $dev \
@@ -6287,6 +6320,7 @@ test_87() { #LU-6544
                skip "ldiskfs only test"
        [[ $OSTCOUNT -gt 59 ]] &&
                skip "Ignore wide striping situation"
+       [ -n "$FILESET" ] && skip "Not functional for FILESET set"
 
        local mdsdev=$(mdsdevname 1)
        local mdsvdev=$(mdsvdevname 1)
@@ -6365,7 +6399,7 @@ test_87() { #LU-6544
                       more than $left_size-byte space left in inode."
        echo "Verified: at most $left_size-byte space left in inode."
 
-       umount_ldiskfs $SINGLEMDS
+       unmount_ldiskfs $SINGLEMDS
 
        for i in $(seq $OSTCOUNT); do
                stop ost$i -f || error "stop ost$i failed"
@@ -6626,10 +6660,41 @@ test_90b() {
 }
 run_test 90b "check max_mod_rpcs_in_flight is enforced after update"
 
+save_params_90c() {
+       # get max_rpcs_in_flight value
+       mrif_90c=$($LCTL get_param -n \
+                  mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight)
+       echo "max_rpcs_in_flight is $mrif_90c"
+
+       # get max_mod_rpcs_in_flight value
+       mmrif_90c=$($LCTL get_param -n \
+                   mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight)
+       echo "max_mod_rpcs_in_flight is $mmrif_90c"
+
+       # get MDT max_mod_rpcs_per_client value
+       mmrpc_90c=$(do_facet mds1 \
+                   cat /sys/module/mdt/parameters/max_mod_rpcs_per_client)
+       echo "max_mod_rpcs_per_client is $mmrpc_90c"
+}
+
+restore_params_90c() {
+       trap 0
+
+       # restore max_rpcs_in_flight value
+       do_facet mgs $LCTL set_param -P \
+               mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight=$mrif_90c
+
+       # restore max_mod_rpcs_in_flight value
+       do_facet mgs $LCTL set_param -P \
+               mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight=$mmrif_90c
+
+       # restore MDT max_mod_rpcs_per_client value
+       do_facet mds1 "echo $mmrpc_90c > \
+                      /sys/module/mdt/parameters/max_mod_rpcs_per_client"
+}
+
 test_90c() {
        local tmp
-       local mrif
-       local mmrpc
 
        setup
 
@@ -6645,42 +6710,64 @@ test_90c() {
                skip "Client not able to send multiple modify RPCs in parallel"
        fi
 
-       # get max_rpcs_in_flight value
-       mrif=$($LCTL get_param -n mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight)
-       echo "max_rpcs_in_flight is $mrif"
-
-       # get MDT max_mod_rpcs_per_client
-       mmrpc=$(do_facet mds1 \
-                   cat /sys/module/mdt/parameters/max_mod_rpcs_per_client)
-       echo "max_mod_rpcs_per_client is $mmrpc"
+       save_params_90c
+       stack_trap restore_params_90c
 
        # testcase 1
        # attempt to set max_mod_rpcs_in_flight to max_rpcs_in_flight value
        # prerequisite: set max_mod_rpcs_per_client to max_rpcs_in_flight value
-       umount_client $MOUNT
-       do_facet mds1 \
-               "echo $mrif > /sys/module/mdt/parameters/max_mod_rpcs_per_client"
-       mount_client $MOUNT
+       do_facet mds1 "echo $mrif_90c > \
+                      /sys/module/mdt/parameters/max_mod_rpcs_per_client"
 
-       $LCTL set_param \
-           mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight=$mrif &&
-           error "set max_mod_rpcs_in_flight to $mrif should fail"
+       # if max_mod_rpcs_in_flight is set to be equal to or larger than
+       # max_rpcs_in_flight, then max_rpcs_in_flight will be increased
+       if [[ "$CLIENT_VERSION" -ge $(version_code 2.13.53) ]]; then
+               $LCTL set_param \
+               mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight=$mrif_90c ||
+                       error "set max_mod_rpcs_in_flight to $mrif_90c failed"
+
+               local new_mrif=$($LCTL get_param -n \
+                                mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight)
+               ((new_mrif == mrif_90c + 1)) ||
+                       error "max_rpcs_in_flight was not increased"
+       fi
 
        umount_client $MOUNT
-       do_facet mds1 \
-               "echo $mmrpc > /sys/module/mdt/parameters/max_mod_rpcs_per_client"
+       do_facet mds1 "echo $mmrpc_90c > \
+                      /sys/module/mdt/parameters/max_mod_rpcs_per_client"
        mount_client $MOUNT
 
        # testcase 2
        # attempt to set max_mod_rpcs_in_flight to max_mod_rpcs_per_client+1
        # prerequisite: set max_rpcs_in_flight to max_mod_rpcs_per_client+2
        $LCTL set_param \
-           mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight=$((mmrpc + 2))
+               mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight=$((mmrpc_90c + 2))
 
        $LCTL set_param \
-           mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight=$((mmrpc + 1)) &&
-           error "set max_mod_rpcs_in_flight to $((mmrpc + 1)) should fail"
+       mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight=$((mmrpc_90c + 1)) &&
+       error "set max_mod_rpcs_in_flight to $((mmrpc_90c + 1)) should fail"
+
+       # testcase 3
+       # attempt to set max_mod_rpcs_in_flight permanently
+       do_facet mgs $LCTL set_param -P \
+               mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight=$mrif_90c
+
+       do_facet mgs $LCTL set_param -P \
+               mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight=$mrif_90c
+
+       remount_client $MOUNT
+
+       wait_update_facet --verbose client "$LCTL get_param -n \
+               mdc.$FSNAME-MDT0000-mdc-*.max_rpcs_in_flight" \
+               "$((mrif_90c + 1))" ||
+               error "expected '$((mrif_90c + 1))' for max_rpcs_in_flight"
 
+       wait_update_facet --verbose client "$LCTL get_param -n \
+               mdc.$FSNAME-MDT0000-mdc-*.max_mod_rpcs_in_flight" \
+               "$mrif_90c" ||
+               error "expected '$mrif_90c' for max_mod_rpcs_in_flight"
+
+       restore_params_90c
        cleanup
 }
 run_test 90c "check max_mod_rpcs_in_flight update limits"
@@ -7309,9 +7396,9 @@ test_100() {
        # Desired output
        # MGS:
        #     0@lo
-       # lustre-MDT0000:
+       # $FSNAME-MDT0000:
        #     0@lo
-       # lustre-OST0000:
+       # $FSNAME-OST0000:
        #     0@lo
        do_facet mgs 'lshowmount -v' | awk 'BEGIN {NR == 0; rc=1} /MGS:/ {rc=0}
                END {exit rc}' || error "lshowmount have no output MGS"
@@ -7805,10 +7892,10 @@ test_108a() {
 
        echo "changing server nid..."
        $rcmd mount -t lustre -o nosvc lustre-mdt1/mdt1 $tmp/mnt/mdt1
-       $rcmd lctl replace_nids lustre-MDT0000 $nid
-       $rcmd lctl replace_nids lustre-MDT0001 $nid
-       $rcmd lctl replace_nids lustre-OST0000 $nid
-       $rcmd lctl replace_nids lustre-OST0001 $nid
+       $rcmd lctl replace_nids $FSNAME-MDT0000 $nid
+       $rcmd lctl replace_nids $FSNAME-MDT0001 $nid
+       $rcmd lctl replace_nids $FSNAME-OST0000 $nid
+       $rcmd lctl replace_nids $FSNAME-OST0001 $nid
        $rcmd umount $tmp/mnt/mdt1
 
        for facet in $facets; do
@@ -7867,10 +7954,10 @@ test_108b() {
 
        echo "changing server nid..."
        $rcmd mount -t lustre -o nosvc,loop $tmp/images/mdt1 $tmp/mnt/mdt1
-       $rcmd lctl replace_nids lustre-MDT0000 $nid
-       $rcmd lctl replace_nids lustre-MDT0001 $nid
-       $rcmd lctl replace_nids lustre-OST0000 $nid
-       $rcmd lctl replace_nids lustre-OST0001 $nid
+       $rcmd lctl replace_nids $FSNAME-MDT0000 $nid
+       $rcmd lctl replace_nids $FSNAME-MDT0001 $nid
+       $rcmd lctl replace_nids $FSNAME-OST0000 $nid
+       $rcmd lctl replace_nids $FSNAME-OST0001 $nid
        $rcmd umount $tmp/mnt/mdt1
 
        for facet in $facets; do
@@ -7880,7 +7967,7 @@ test_108b() {
        done
 
        for facet in $scrub_list; do
-               $rcmd $LCTL lfsck_start -M lustre-$facet -t scrub ||
+               $rcmd $LCTL lfsck_start -M $FSNAME-$facet -t scrub ||
                        error "failed to start OI scrub on $facet"
        done
 
@@ -8306,6 +8393,32 @@ test_111() {
 }
 run_test 111 "Adding large_dir with over 2GB directory"
 
+test_112() {
+       start_mds || error "MDS start failed"
+       start_ost || error "OSS start failed"
+       echo "start ost2 service on $(facet_active_host ost2)"
+       start ost2 $(ostdevname 2) $(csa_add "$OST_MOUNT_OPTS" -o no_precreate) ||
+               error "start ost2 facet failed"
+       local val=$(do_facet ost2 \
+                  "$LCTL get_param -n obdfilter.$FSNAME-OST0001*.no_precreate")
+       (( $val == 1 )) || error "obdfilter.$FSNAME-OST0001*.no_precreate=$val"
+
+       mount_client $MOUNT || error "mount client failed"
+       wait_osc_import_state client ost2 FULL
+
+       $LFS setstripe -i 0 $DIR/$tfile.0 ||
+               error "problem creating $tfile.0 on OST0000"
+       $LFS setstripe -i 1 $DIR/$tfile.1 && $LFS getstripe $DIR/$tfile.1 &&
+               (( $($LFS getstripe -i $DIR/$tfile.1) == 1 )) &&
+               error "allowed to create $tfile.1 on OST0001"
+       do_facet ost2 $LCTL set_param obdfilter.*.no_precreate=0
+       sleep_maxage
+       $LFS setstripe -i 1 $DIR/$tfile.2 ||
+               error "failed to create $tfile.2 on ost1 facet"
+       stop_ost2 || error "stop ost2 facet failed"
+       cleanup
+}
+run_test 112 "mount OST with nocreate option"
 
 cleanup_115()
 {
@@ -8318,6 +8431,7 @@ test_115() {
        if [ "$mds1_FSTYPE" != ldiskfs ]; then
                skip "Only applicable to ldiskfs-based MDTs"
        fi
+       [ -n "$FILESET" ] && skip "Not functional for FILESET set"
 
        local dbfs_ver=$(do_facet $SINGLEMDS $DEBUGFS -V 2>&1)
 
@@ -8331,6 +8445,14 @@ test_115() {
        IMAGESIZE=$((3072 << 30)) # 3072 GiB
 
        stopall
+
+       echo "client1: "
+       lctl dl
+       mount | grep lustre
+       echo "mds1: "
+       do_facet mds1 "hostname; ifconfig; lctl dl; mount"
+       echo "ost1: "
+       do_facet ost1 "hostname; ifconfig; lctl dl; mount"
        # We need MDT size 3072GB, because it is smallest
        # partition that can store 2B inodes
        do_facet $SINGLEMDS "mkdir -p $TMP/$tdir"
@@ -8343,9 +8465,9 @@ test_115() {
        local mdsdev=$(do_facet $SINGLEMDS "losetup -f")
        do_facet $SINGLEMDS "losetup $mdsdev $mdsimgname"
 
-       local mds_opts="$(mkfs_opts mds1 $(mdsdevname 1)) --device-size=$IMAGESIZE   \
+       local mds_opts="$(mkfs_opts mds1 $(mdsdevname 1))        \
                --mkfsoptions='-O ea_inode,^resize_inode,meta_bg \
-               -N 2247484000 -E lazy_itable_init'"
+               -N 2247484000 -E lazy_itable_init' --device-size=$IMAGESIZE"
        add mds1 $mds_opts --mgs --reformat $mdsdev ||
                skip_env "format large MDT failed"
        opts="$(mkfs_opts ost1 $(ostdevname 1)) \
@@ -8508,7 +8630,7 @@ test_123ab() {
        local orig_val
 
        orig_val=$(do_facet mgs $LCTL get_param jobid_name)
-       do_facet mgs $LCTL set_param -P jobid_name="testname"
+       do_facet mgs $LCTL set_param -P jobid_name="TESTNAME"
 
        yaml=$(do_facet mgs $LCTL --device MGS llog_print params |
               grep jobid_name | tail -n 1)
@@ -8517,7 +8639,7 @@ test_123ab() {
        local val=$(awk '{ print $12 }' <<< "$yaml")
        #return to the default
        do_facet mgs $LCTL set_param -P jobid_name=$orig_val
-       [ $val = "testname" ] || error "bad value: $val"
+       [ $val = "TESTNAME" ] || error "bad value: $val"
        [ $param = "jobid_name," ] || error "Bad param: $param"
 }
 run_test 123ab "llog_print params output values from set_param -P"
@@ -8633,7 +8755,7 @@ test_123F() {
 
        # set jobid_var to a different value for test
        local orig_val=$(do_facet mgs $LCTL get_param jobid_var)
-       do_facet mgs $LCTL set_param -P jobid_var="testname"
+       do_facet mgs $LCTL set_param -P jobid_var="TESTNAME"
 
        for i in $cfgfiles params; do
                do_facet mgs "lctl --device MGS llog_print ${i} >> $yaml_file"
@@ -8656,8 +8778,8 @@ test_123F() {
        local set_val=$(do_facet mgs $LCTL get_param jobid_var)
        do_facet mgs $LCTL set_param -P $orig_val
 
-       [ $set_val == "jobid_var=testname" ] ||
-               error "$set_val is not testname"
+       [ $set_val == "jobid_var=TESTNAME" ] ||
+               error "$set_val is not TESTNAME"
 
        do_facet mgs rm "$yaml_file"
        cleanup
@@ -8837,6 +8959,24 @@ test_125()
 }
 run_test 125 "check l_tunedisk only tunes OSTs and their slave devices"
 
+test_126() {
+       [[ "$MDS1_VERSION" -ge $(version_code 2.13.52) ]] ||
+               skip "Need MDS version at least 2.13.52"
+
+       cleanup
+       do_rpc_nodes $(facet_active_host $SINGLEMDS) load_module ../libcfs/libcfs/libcfs
+       #define OBD_FAIL_OBD_SETUP 0x60d
+       do_facet mds1 $LCTL set_param fail_loc=0x60d
+       do_rpc_nodes $(facet_active_host $SINGLEMDS) load_modules &
+       for i in {1..40}; do
+               do_facet mds1 lsmod | grep -q osd_$mds1_FSTYPE && break
+               sleep 1
+       done
+       clear_failloc $SINGLEMDS 20 &
+       start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS
+}
+run_test 126 "mount in parallel shouldn't cause a crash"
+
 if ! combined_mgs_mds ; then
        stop mgs
 fi