Whamcloud - gitweb
LU-5499 tests: keep /sbin/mount.lustre until cleanup 59/11259/7
authorAndreas Dilger <andreas.dilger@intel.com>
Wed, 28 May 2014 23:15:25 +0000 (17:15 -0600)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 12 Sep 2014 19:34:50 +0000 (19:34 +0000)
Don't unmount /sbin/mount.lustre in the middle of running tests
on a local test system if it is not doing final cleanup.  Otherwise,
later mounts may fail.

The current /sbin/mount.lustre mountpoint is an empty stub that
returns success (0) if executed, but doesn't mount the filesystem.
Instead, create a mountpoint that prints an message if executed and
returns an error to the caller, so it is easier to debug problems.

Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Change-Id: Ied7b69f536bad87333cf5c543384723412500c1e
Reviewed-on: http://review.whamcloud.com/11259
Reviewed-by: frank zago <fzago@cray.com>
Tested-by: Jenkins
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/sanity.sh
lustre/tests/test-framework.sh

index ae85f4c..8de0173 100644 (file)
@@ -603,7 +603,7 @@ test_17m() {
        stop mds${mds_index}
        do_facet mds${mds_index} $cmd || rc=$?
 
-       start mds${mds_index} $devname $MDS_MOUNT_OPTS
+       start mds${mds_index} $devname $MDS_MOUNT_OPTS || error "start failed"
        df $MOUNT > /dev/null 2>&1
        [ $rc -ne 0 ] && error "e2fsck should not report error upon "\
                "short/long symlink MDT: rc=$rc"
@@ -628,7 +628,8 @@ check_fs_consistency_17n() {
                stop mds${mdt_index}
                do_facet mds${mdt_index} $cmd || rc=$?
 
-               start mds${mdt_index} $devname $MDS_MOUNT_OPTS
+               start mds${mdt_index} $devname $MDS_MOUNT_OPTS ||
+                       error "mount mds${mdt_index} failed"
                df $MOUNT > /dev/null 2>&1
                [ $rc -ne 0 ] && break
        done
@@ -707,7 +708,8 @@ test_17o() {
 
        touch $WDIR/$tfile
        stop mds${mdt_index}
-       start mds${mdt_index} $mdtdevname $MDS_MOUNT_OPTS
+       start mds${mdt_index} $mdtdevname $MDS_MOUNT_OPTS ||
+               error "mount mds${mdt_index} failed"
 
        #define OBD_FAIL_OSD_LMA_INCOMPAT 0x194
        do_facet mds${mdt_index} lctl set_param fail_loc=0x194
index f38f088..db1990e 100755 (executable)
@@ -539,15 +539,27 @@ load_modules_local() {
        $LCTL modules > $OGDB/ogdb-$HOSTNAME
 
        # 'mount' doesn't look in $PATH, just sbin
-       local MOUNT_LUSTRE=$LUSTRE/utils/mount.lustre
-       if [ -f $MOUNT_LUSTRE ]; then
-               if grep -qe "/sbin/mount\.lustre " /proc/mounts; then
-                       cmp $MOUNT_LUSTRE /sbin/mount.lustre ||
-                               umount /sbin/mount.lustre
+       local mount_lustre=$LUSTRE/utils/mount.lustre
+       if [ -f $mount_lustre ]; then
+               local sbin_mount=/sbin/mount.lustre
+               if grep -qe "$sbin_mount " /proc/mounts; then
+                       cmp $mount_lustre $sbin_mount || umount $sbin_mount
                fi
-               if ! grep -qe "/sbin/mount\.lustre " /proc/mounts; then
-                       [ ! -f /sbin/mount.lustre ] && touch /sbin/mount.lustre
-                       mount --bind $MOUNT_LUSTRE /sbin/mount.lustre
+               if ! grep -qe "$sbin_mount " /proc/mounts; then
+                       [ ! -f "$sbin_mount" ] && touch "$sbin_mount"
+                       if [ ! -s "$sbin_mount" -a -w "$sbin_mount" ]; then
+                               cat <<- EOF > "$sbin_mount"
+                               #!/bin/sh
+                               #STUB MARK
+                               echo "This $sbin_mount just a mountpoint." 1>&2
+                               echo "It is never supposed to be run." 1>&2
+                               logger -p emerg -- "using stub $sbin_mount $@"
+                               exit 1
+                               EOF
+                               chmod a+x $sbin_mount
+                       fi
+                       mount --bind $mount_lustre $sbin_mount ||
+                               error "can't bind $mount_lustre to $sbin_mount"
                fi
        fi
 }
@@ -593,16 +605,17 @@ unload_modules() {
                fi
        fi
 
-    if grep -qe "/sbin/mount\.lustre" /proc/mounts; then
-        umount /sbin/mount.lustre || true
-        [ -w /sbin/mount.lustre -a ! -s /sbin/mount.lustre ] && \
-            rm -f /sbin/mount.lustre || true
-    fi
+       local sbin_mount=/sbin/mount.lustre
+       if grep -qe "$sbin_mount " /proc/mounts; then
+               umount $sbin_mount || true
+               [ -s $sbin_mount ] && ! grep -q "STUB MARK" $sbin_mount ||
+                       rm -f $sbin_mount
+       fi
 
-    check_mem_leak || return 254
+       check_mem_leak || return 254
 
-    echo "modules unloaded."
-    return 0
+       echo "modules unloaded."
+       return 0
 }
 
 fs_log_size() {
@@ -4118,10 +4131,6 @@ check_and_cleanup_lustre() {
                cleanupall -f || error "cleanup failed"
                unset I_MOUNTED
        fi
-
-       if grep -qe "/sbin/mount\.lustre " /proc/mounts; then
-               umount /sbin/mount.lustre
-       fi
 }
 
 #######