Whamcloud - gitweb
LU-5472 tests: export UMOUNT to avoid SLES12 issue 45/16445/10
authorYang Sheng <yang.sheng@intel.com>
Fri, 23 Oct 2015 18:32:33 +0000 (02:32 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 2 Nov 2015 07:03:00 +0000 (07:03 +0000)
sles12 umount command has issue with '-d' option.
it will report error while a absolute pathname
of mountpoint present with '-d'. So we export
UMOUNT to avoid such problem. In fact, loopdev
can be free automaticly. So '-d' needn't given
explicity.  But consider compatibility we still
keep it.
Also include http://review.whamcloud.com/#/c/14799/
port patch to master.
In SLES12, umount command will run statfs() on the
filesystem, which will cause unmounting Lustre client
hang when OST is unavailable. This patch adds "-f"
option to zconf_umount in conf-sanity.sh to avoid the
issue.

Test-Parameters: alwaysuploadlogs envdefinitions=ONLY=32 clientdistro=sles12 mdtcount=1 testlist=sanity
Test-Parameters: alwaysuploadlogs envdefinitions=SLOW=yes clientdistro=sles12 mdtcount=1 testlist=conf-sanity
Signed-off-by: Yang Sheng <yang.sheng@intel.com>
Change-Id: If466c2101e0db52b5ec1f7273a846dc2497cfb84
Reviewed-on: http://review.whamcloud.com/16445
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Tested-by: Jenkins
Reviewed-by: Jian Yu <jian.yu@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/conf-sanity.sh
lustre/tests/sanity.sh
lustre/tests/test-framework.sh

index 492a32f..b7f23ec 100644 (file)
@@ -213,16 +213,17 @@ remount_client() {
 }
 
 umount_client() {
 }
 
 umount_client() {
-       local MOUNTPATH=$1
-       echo "umount lustre on ${MOUNTPATH}....."
-       zconf_umount $(hostname) $MOUNTPATH || return 97
+       local mountpath=$1
+       shift
+       echo "umount lustre on $mountpath....."
+       zconf_umount $HOSTNAME $mountpath $@ || return 97
 }
 
 manual_umount_client(){
        local rc
        local FORCE=$1
        echo "manual umount lustre on ${MOUNT}...."
 }
 
 manual_umount_client(){
        local rc
        local FORCE=$1
        echo "manual umount lustre on ${MOUNT}...."
-       do_facet client "umount -d ${FORCE} $MOUNT"
+       do_facet client "umount ${FORCE} $MOUNT"
        rc=$?
        return $rc
 }
        rc=$?
        return $rc
 }
@@ -344,7 +345,8 @@ test_4() {
        setup
        touch $DIR/$tfile || error "touch $DIR/$tfile failed"
        stop_ost || error "Unable to stop OST1"
        setup
        touch $DIR/$tfile || error "touch $DIR/$tfile failed"
        stop_ost || error "Unable to stop OST1"
-       cleanup
+       umount_client $MOUNT -f || error “unmount $MOUNT failed”
+       cleanup_nocli
        eno=$?
        # ok for ost to fail shutdown
        if [ 202 -ne $eno ] && [ 0 -ne $eno ]; then
        eno=$?
        # ok for ost to fail shutdown
        if [ 202 -ne $eno ] && [ 0 -ne $eno ]; then
@@ -363,7 +365,7 @@ test_5a() { # was test_5
        # cleanup may return an error from the failed
        # disconnects; for now I'll consider this successful
        # if all the modules have unloaded.
        # cleanup may return an error from the failed
        # disconnects; for now I'll consider this successful
        # if all the modules have unloaded.
-       umount -d $MOUNT &
+       $UMOUNT -f $MOUNT &
        UMOUNT_PID=$!
        sleep 6
        echo "killing umount"
        UMOUNT_PID=$!
        sleep 6
        echo "killing umount"
@@ -458,7 +460,8 @@ test_5d() {
        start_mds || error "MDS start failed"
        stop_ost || error "Unable to stop OST1"
        mount_client $MOUNT || error "mount_client $MOUNT failed"
        start_mds || error "MDS start failed"
        stop_ost || error "Unable to stop OST1"
        mount_client $MOUNT || error "mount_client $MOUNT failed"
-       cleanup || error "cleanup_nocli failed with $?"
+       umount_client $MOUNT -f || error "umount_client $MOUNT failed"
+       cleanup_nocli || error "cleanup_nocli failed with $?"
        grep " $MOUNT " /etc/mtab &&
                error "$MOUNT entry in mtab after unmount"
        pass
        grep " $MOUNT " /etc/mtab &&
                error "$MOUNT entry in mtab after unmount"
        pass
@@ -841,7 +844,7 @@ test_22() {
        # check_mount will block trying to contact ost
        mcreate $DIR/$tfile || error "mcreate $DIR/$tfile failed"
        rm -f $DIR/$tfile || error "remove $DIR/$tfile failed"
        # check_mount will block trying to contact ost
        mcreate $DIR/$tfile || error "mcreate $DIR/$tfile failed"
        rm -f $DIR/$tfile || error "remove $DIR/$tfile failed"
-       umount_client $MOUNT
+       umount_client $MOUNT -f
        pass
 
        echo "Client mount with a running ost"
        pass
 
        echo "Client mount with a running ost"
@@ -1477,13 +1480,13 @@ t32_test_cleanup() {
                umount $tmp/mnt/lustre || rc=$?
        fi
        if $shall_cleanup_mdt; then
                umount $tmp/mnt/lustre || rc=$?
        fi
        if $shall_cleanup_mdt; then
-               $r umount -d $tmp/mnt/mdt || rc=$?
+               $r $UMOUNT $tmp/mnt/mdt || rc=$?
        fi
        if $shall_cleanup_mdt1; then
        fi
        if $shall_cleanup_mdt1; then
-               $r umount -d $tmp/mnt/mdt1 || rc=$?
+               $r $UMOUNT $tmp/mnt/mdt1 || rc=$?
        fi
        if $shall_cleanup_ost; then
        fi
        if $shall_cleanup_ost; then
-               $r umount -d $tmp/mnt/ost || rc=$?
+               $r $UMOUNT $tmp/mnt/ost || rc=$?
        fi
 
        $r rm -rf $tmp
        fi
 
        $r rm -rf $tmp
@@ -1750,7 +1753,7 @@ t32_test() {
                        $r $MOUNT_CMD -o $mopts $mdt_dev $tmp/mnt/mdt
                        $r $LCTL replace_nids $fsname-OST0000 $ostnid
                        $r $LCTL replace_nids $fsname-MDT0000 $nid
                        $r $MOUNT_CMD -o $mopts $mdt_dev $tmp/mnt/mdt
                        $r $LCTL replace_nids $fsname-OST0000 $ostnid
                        $r $LCTL replace_nids $fsname-MDT0000 $nid
-                       $r umount -d $tmp/mnt/mdt
+                       $r $UMOUNT $tmp/mnt/mdt
                fi
 
                mopts=exclude=$fsname-OST0000
                fi
 
                mopts=exclude=$fsname-OST0000
@@ -2134,20 +2137,20 @@ t32_test() {
                shall_cleanup_lustre=false
        else
                if [ "$dne_upgrade" != "no" ]; then
                shall_cleanup_lustre=false
        else
                if [ "$dne_upgrade" != "no" ]; then
-                       $r umount -d $tmp/mnt/mdt1 || {
+                       $r $UMOUNT $tmp/mnt/mdt1 || {
                                error_noexit "Unmounting the MDT2"
                                return 1
                        }
                        shall_cleanup_mdt1=false
                fi
 
                                error_noexit "Unmounting the MDT2"
                                return 1
                        }
                        shall_cleanup_mdt1=false
                fi
 
-               $r umount -d $tmp/mnt/mdt || {
+               $r $UMOUNT $tmp/mnt/mdt || {
                        error_noexit "Unmounting the MDT"
                        return 1
                }
                shall_cleanup_mdt=false
 
                        error_noexit "Unmounting the MDT"
                        return 1
                }
                shall_cleanup_mdt=false
 
-               $r umount -d $tmp/mnt/ost || {
+               $r $UMOUNT $tmp/mnt/ost || {
                        error_noexit "Unmounting the OST"
                        return 1
                }
                        error_noexit "Unmounting the OST"
                        return 1
                }
@@ -2275,7 +2278,7 @@ test_33a() { # bug 12333, was test_33
        cp /etc/hosts $MOUNT2/ || error "copy /etc/hosts $MOUNT2/ failed"
        $GETSTRIPE $MOUNT2/hosts || error "$GETSTRIPE $MOUNT2/hosts failed"
 
        cp /etc/hosts $MOUNT2/ || error "copy /etc/hosts $MOUNT2/ failed"
        $GETSTRIPE $MOUNT2/hosts || error "$GETSTRIPE $MOUNT2/hosts failed"
 
-       umount -d $MOUNT2
+       umount $MOUNT2
        stop fs2ost -f
        stop fs2mds -f
        cleanup_nocli || error "cleanup_nocli failed with $?"
        stop fs2ost -f
        stop fs2mds -f
        cleanup_nocli || error "cleanup_nocli failed with $?"
@@ -2540,7 +2543,7 @@ test_36() { # 12743
                 rc=3
        fi
 
                 rc=3
        fi
 
-       umount -d $MOUNT2
+       $UMOUNT $MOUNT2
        stop fs3ost -f || error "unable to stop OST3"
        stop fs2ost -f || error "unable to stop OST2"
        stop fs2mds -f || error "unable to stop second MDS"
        stop fs3ost -f || error "unable to stop OST3"
        stop fs2ost -f || error "unable to stop OST2"
        stop fs2mds -f || error "unable to stop second MDS"
@@ -2578,7 +2581,7 @@ test_37() {
 
        echo mount_op=$mount_op
 
 
        echo mount_op=$mount_op
 
-       do_facet $SINGLEMDS "umount -d $mntpt && rm -f $mdsdev_sym"
+       do_facet $SINGLEMDS "$UMOUNT $mntpt && rm -f $mdsdev_sym"
 
        if $(echo $mount_op | grep -q "unable to set tunable"); then
                error "set tunables failed for symlink device"
 
        if $(echo $mount_op | grep -q "unable to set tunable"); then
                error "set tunables failed for symlink device"
@@ -3428,7 +3431,7 @@ test_50f() {
            stop_ost2 || error "Unable to stop OST2"
        fi
 
            stop_ost2 || error "Unable to stop OST2"
        fi
 
-       umount_client $MOUNT || error "Unable to unmount client"
+       umount_client $MOUNT -f || error "Unable to unmount client"
        stop_ost || error "Unable to stop OST1"
        stop_mds || error "Unable to stop MDS"
        #writeconf to remove all ost2 traces for subsequent tests
        stop_ost || error "Unable to stop OST1"
        stop_mds || error "Unable to stop MDS"
        #writeconf to remove all ost2 traces for subsequent tests
@@ -3573,7 +3576,8 @@ test_51() {
        start_ost2 || error "Unable to start OST1"
        wait $pid
        stop_ost2 || error "Unable to stop OST1"
        start_ost2 || error "Unable to start OST1"
        wait $pid
        stop_ost2 || error "Unable to stop OST1"
-       cleanup || error "cleanup failed with $?"
+       umount_client $MOUNT -f || error “unmount $MOUNT failed”
+       cleanup_nocli || error “stop server failed”
        #writeconf to remove all ost2 traces for subsequent tests
        writeconf_or_reformat
 }
        #writeconf to remove all ost2 traces for subsequent tests
        writeconf_or_reformat
 }
@@ -4217,7 +4221,8 @@ test_64() {
        stop_ost2 || error "Unable to stop second ost"
        echo "$LFS df"
        $LFS df --lazy || error "lfs df failed"
        stop_ost2 || error "Unable to stop second ost"
        echo "$LFS df"
        $LFS df --lazy || error "lfs df failed"
-       cleanup || error "cleanup failed with $?"
+       umount_client $MOUNT -f || error “unmount $MOUNT failed”
+       cleanup_nocli || error "cleanup_nocli failed with $?"
        #writeconf to remove all ost2 traces for subsequent tests
        writeconf_or_reformat
 }
        #writeconf to remove all ost2 traces for subsequent tests
        writeconf_or_reformat
 }
@@ -4252,7 +4257,7 @@ test_65() { # LU-2237
        do_facet $SINGLEMDS \
                "mount -t $(facet_fstype $SINGLEMDS) $opts $devname $brpt"
        do_facet $SINGLEMDS "rm -f ${brpt}/last_rcvd"
        do_facet $SINGLEMDS \
                "mount -t $(facet_fstype $SINGLEMDS) $opts $devname $brpt"
        do_facet $SINGLEMDS "rm -f ${brpt}/last_rcvd"
-       do_facet $SINGLEMDS "umount -d $brpt"
+       do_facet $SINGLEMDS "$UMOUNT $brpt"
 
        # restart MDS, the "last_rcvd" file should be recreated.
        start_mds || error "fail to restart the MDS"
 
        # restart MDS, the "last_rcvd" file should be recreated.
        start_mds || error "fail to restart the MDS"
index 4c3d5f6..043a801 100755 (executable)
@@ -56,7 +56,6 @@ SOCKETCLIENT=${SOCKETCLIENT:-socketclient}
 MEMHOG=${MEMHOG:-memhog}
 DIRECTIO=${DIRECTIO:-directio}
 ACCEPTOR_PORT=${ACCEPTOR_PORT:-988}
 MEMHOG=${MEMHOG:-memhog}
 DIRECTIO=${DIRECTIO:-directio}
 ACCEPTOR_PORT=${ACCEPTOR_PORT:-988}
-UMOUNT=${UMOUNT:-"umount -d"}
 STRIPES_PER_OBJ=-1
 CHECK_GRANT=${CHECK_GRANT:-"yes"}
 GRANT_CHECK_LIST=${GRANT_CHECK_LIST:-""}
 STRIPES_PER_OBJ=-1
 CHECK_GRANT=${CHECK_GRANT:-"yes"}
 GRANT_CHECK_LIST=${GRANT_CHECK_LIST:-""}
@@ -2366,7 +2365,7 @@ run_test 31p "remove of open striped directory"
 
 cleanup_test32_mount() {
        trap 0
 
 cleanup_test32_mount() {
        trap 0
-       $UMOUNT -d $DIR/$tdir/ext2-mountpoint
+       $UMOUNT $DIR/$tdir/ext2-mountpoint
 }
 
 test_32a() {
 }
 
 test_32a() {
@@ -2573,7 +2572,7 @@ run_test 32p "open d32p/symlink->tmp/symlink->lustre-root/$tfile"
 
 cleanup_testdir_mount() {
        trap 0
 
 cleanup_testdir_mount() {
        trap 0
-       $UMOUNT -d $DIR/$tdir
+       $UMOUNT $DIR/$tdir
 }
 
 test_32q() {
 }
 
 test_32q() {
@@ -4314,7 +4313,7 @@ cleanup_54c() {
        loopdev="$DIR/loop54c"
 
        trap 0
        loopdev="$DIR/loop54c"
 
        trap 0
-       $UMOUNT -d $DIR/$tdir || rc=$?
+       $UMOUNT $DIR/$tdir || rc=$?
        losetup -d $loopdev || true
        losetup -d $LOOPDEV || true
        rm -rf $loopdev $DIR/$tfile $DIR/$tdir
        losetup -d $loopdev || true
        losetup -d $LOOPDEV || true
        rm -rf $loopdev $DIR/$tfile $DIR/$tdir
index e2ad9ce..d7c51ed 100755 (executable)
@@ -23,6 +23,11 @@ export LOAD_LLOOP=${LOAD_LLOOP:-false}
 
 #export PDSH="pdsh -S -Rssh -w"
 export MOUNT_CMD=${MOUNT_CMD:-"mount -t lustre"}
 
 #export PDSH="pdsh -S -Rssh -w"
 export MOUNT_CMD=${MOUNT_CMD:-"mount -t lustre"}
+export UMOUNT=${UMOUNT:-"umount -d"}
+# sles12 umount has a issue with -d option
+[ -e /etc/SuSE-release ] && grep -w VERSION /etc/SuSE-release | grep -wq 12 && {
+       export UMOUNT="umount"
+}
 
 # function used by scripts run on remote nodes
 LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
 
 # function used by scripts run on remote nodes
 LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
@@ -1301,7 +1306,7 @@ stop() {
     running=$(do_facet ${facet} "grep -c $mntpt' ' /proc/mounts") || true
     if [ ${running} -ne 0 ]; then
         echo "Stopping $mntpt (opts:$@) on $HOST"
     running=$(do_facet ${facet} "grep -c $mntpt' ' /proc/mounts") || true
     if [ ${running} -ne 0 ]; then
         echo "Stopping $mntpt (opts:$@) on $HOST"
-        do_facet ${facet} umount -d $@ $mntpt
+       do_facet ${facet} $UMOUNT $@ $mntpt
     fi
 
        # umount should block, but we should wait for unrelated obd's
     fi
 
        # umount should block, but we should wait for unrelated obd's
@@ -3222,7 +3227,7 @@ unmount_ldiskfs() {
        local dev=$(facet_device $facet)
        local mnt=$(facet_mntpt $facet)
 
        local dev=$(facet_device $facet)
        local mnt=$(facet_mntpt $facet)
 
-       do_facet $facet umount -d $mnt
+       do_facet $facet $UMOUNT $mnt
 }
 
 var_name() {
 }
 
 var_name() {
@@ -7006,7 +7011,7 @@ mds_backup_restore() {
        echo "backup data"
        ${rcmd} tar zcf $metadata -C $mntpt/ . > /dev/null 2>&1 || return 3
        # step 6: umount
        echo "backup data"
        ${rcmd} tar zcf $metadata -C $mntpt/ . > /dev/null 2>&1 || return 3
        # step 6: umount
-       ${rcmd} umount -d $mntpt || return 4
+       ${rcmd} $UMOUNT $mntpt || return 4
        # step 8: reformat dev
        echo "reformat new device"
        format_mdt $(facet_number $facet)
        # step 8: reformat dev
        echo "reformat new device"
        format_mdt $(facet_number $facet)
@@ -7022,7 +7027,7 @@ mds_backup_restore() {
        echo "remove recovery logs"
        ${rcmd} rm -fv $mntpt/OBJECTS/* $mntpt/CATALOGS
        # step 13: umount dev
        echo "remove recovery logs"
        ${rcmd} rm -fv $mntpt/OBJECTS/* $mntpt/CATALOGS
        # step 13: umount dev
-       ${rcmd} umount -d $mntpt || return 10
+       ${rcmd} $UMOUNT $mntpt || return 10
        # step 14: cleanup tmp backup
        ${rcmd} rm -f $metaea $metadata
        # step 15: reset device label - it's not virgin on
        # step 14: cleanup tmp backup
        ${rcmd} rm -f $metaea $metadata
        # step 15: reset device label - it's not virgin on
@@ -7062,7 +7067,7 @@ mds_remove_ois() {
                done
        fi
        # step 4: umount
                done
        fi
        # step 4: umount
-       ${rcmd} umount -d $mntpt || return 2
+       ${rcmd} $UMOUNT $mntpt || return 2
        # OI files will be recreated when mounted as lustre next time.
 }
 
        # OI files will be recreated when mounted as lustre next time.
 }