Whamcloud - gitweb
LU-15152 tests: auster reports wrong testsuite status
[fs/lustre-release.git] / lustre / tests / large-lun.sh
index bac2b01..153d0bb 100644 (file)
@@ -2,25 +2,27 @@
 #
 # This script is used to test large size LUN support in Lustre.
 #
-################################################################################
+
 set -e
 
-LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
+LUSTRE=${LUSTRE:-$(dirname $0)/..}
 . $LUSTRE/tests/test-framework.sh
 init_test_env $@
-. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
 init_logging
 
+ALWAYS_EXCEPT="$LARGE_LUN_EXCEPT"
+build_test_filter
+
+if [ "$REFORMAT" != "yes" ]; then
+       skip_env "$0 reformats all devices,\
+               please set REFORMAT to run this test"
+fi
+
 # Variable to run mdsrate
 THREADS_PER_CLIENT=${THREADS_PER_CLIENT:-5}    # thread(s) per client node
-MACHINEFILE=${MACHINEFILE:-$TMP/$TESTSUITE.machines}
 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
 
-# bug number:
-ALWAYS_EXCEPT="$LARGE_LUN_EXCEPT"
-
-build_test_filter
 LARGE_LUN_RESTORE_MOUNT=false
 if is_mounted $MOUNT || is_mounted $MOUNT2; then
        LARGE_LUN_RESTORE_MOUNT=true
@@ -47,7 +49,7 @@ run_dumpfs() {
                ldiskfs )
                        cmd="$DUMPE2FS -h $dev" ;;
                zfs )
-                       cmd="$ZDB -l $(facet_vdevice $facet)" ;;
+                       cmd="$ZDB -l $(zpool_name $facet)" ;;
                * )
                        error "unknown fstype!" ;;
        esac
@@ -77,7 +79,7 @@ client_df() {
 cleanup_dirs() {
        local target=$1
        local mnt=${2:-$MOUNT}
-       local cmd="rm -rf $mnt/{*.filecount,dir*}"
+       local cmd="rm -rf $mnt/{llverfs,dir}*"
        do_facet $target "$cmd"
 }
 
@@ -143,15 +145,18 @@ do_fsck() {
 trap cleanupall EXIT
 
 test_1 () {
-       [ $(facet_fstype $SINGLEMDS) != ldiskfs ] &&
-               skip "Only applicable to ldiskfs-based nodes" && return
+       [ "$mds1_FSTYPE" != ldiskfs ] && skip_env "ldiskfs only test"
+
        local dev
+
        for num in $(seq $OSTCOUNT); do
                dev=$(ostdevname $num)
                log "run llverdev on the OST $dev"
                do_rpc_nodes $(facet_host ost${num}) run_llverdev $dev -vpf ||
                        error "llverdev on $dev failed!"
        done
+       # restore format overwritten by llverdev
+       formatall
 }
 run_test 1 "run llverdev on raw LUN"
 
@@ -159,13 +164,37 @@ test_2 () {
        local dev
        local ostmnt
        local fstype
+       local zostsize_restore=${OSTSIZE}
+       local zmin=$((30 << 30)) # 30GiB in bytes
+       local skipped=1
+
+       stack_trap "export OSTSIZE=$zostsize_restore" EXIT
 
        for num in $(seq $OSTCOUNT); do
                dev=$(ostdevname $num)
                ostmnt=$(facet_mntpt ost${num})
                fstype=$(facet_fstype ost${num})
 
-               # Mount the OST as an ldiskfs filesystem.
+               if [[ $fstype == "zfs" ]] && [[ ${OSTSIZE} -lt ${zmin} ]]; then
+                       local real_dev=$(ostvdevname $num)
+                       local num_sectors=$(get_num_sectors $facet $real_dev)
+                       local phy_bytes=$((num_sectors * 512))
+
+                       if [ ${phy_bytes} -lt ${zmin} ] ; then
+                               log "ost${num}: OSTSIZE ${OSTSIZE} less than 30GiB"
+                               log "ost${num}: Block device ${phy_bytes} too small"
+                               log " .. skipping this ost"
+                               continue
+                       fi
+                       # Backing block device is big enough
+                       skipped=0
+                       log "ost${num}: OSTSIZE ${OSTSIZE} too small, increasing to 30GiB [temporarily]"
+                       format_ost ${num}
+                       # NOTE: OSTSIZE is in KB
+                       export OSTSIZE=$((zmin >> 10))
+               fi
+
+               # Mount the OST as an ldiskfs or zfs filesystem.
                log "mount the OST $dev as a $fstype filesystem"
                add ost${num} $(mkfs_opts ost${num} $dev) $FSTYPE_OPT \
                        --reformat $(ostdevname $num) \
@@ -173,14 +202,16 @@ test_2 () {
                        error "format ost${num} error"
                if [ $fstype == zfs ]; then
                        import_zpool ost${num}
-                       do_facet ost${num} "$ZFS set canmount=on $dev; " \
-                           "$ZFS set mountpoint=legacy $dev; $ZFS list $dev"
+                       do_facet ost${num} \
+                           "$ZFS set canmount=on $dev; " \
+                           "$ZFS set mountpoint=legacy $dev; " \
+                           "$ZFS list $dev"
                fi
                run_dumpfs ost${num} $dev
                do_facet ost${num} mount -t $fstype $dev \
                        $ostmnt "$OST_MOUNT_OPTS"
 
-               # Run llverfs on the mounted ldiskfs filesystem in partial mode
+               # Run llverfs on the mounted filesystem in partial mode
                # to ensure that the kernel can perform filesystem operations
                # on the complete device without any errors.
                log "run llverfs in partial mode on the OST $fstype $ostmnt"
@@ -191,7 +222,7 @@ test_2 () {
                log "unmount the OST $dev"
                stop ost${num}
 
-               # After llverfs is run on the ldiskfs filesystem in partial
+               # After llverfs is run on the filesystem in partial
                # mode, a full e2fsck should be run to catch any errors early.
                $RUN_FSCK && check_fsfacet ost${num}
 
@@ -224,15 +255,20 @@ test_2 () {
                        #  errors early.
                        $RUN_FSCK && check_fsfacet ost${num}
                fi
+               export OSTSIZE=${zostsize_restore}
        done
+       [[ $skipped -ne 0 ]] && skip_env "No OST with enough space is available."
+       # there is no reason to continue using ost devices
+       # filled by llverfs as ldiskfs
+       formatall
 }
 run_test 2 "run llverfs on OST ldiskfs/zfs filesystem"
 
 test_3 () {
-       [ -z "$CLIENTS" ] && skip_env "CLIENTS not defined, skipping" && return
-       [ -z "$MPIRUN" ] && skip_env "MIPRUN not defined, skipping" && return
-       [ -z "$MDSRATE" ] && skip_env "MDSRATE not defined, skipping" && return
-       [ ! -x $MDSRATE ] && skip_env "$MDSRATE not built, skipping" && return
+       [ -z "$CLIENTS" ] && skip_env "CLIENTS not defined, skipping"
+       [ -z "$MPIRUN" ] && skip_env "MIPRUN not defined, skipping"
+       [ -z "$MDSRATE" ] && skip_env "MDSRATE not defined, skipping"
+       [ ! -x $MDSRATE ] && skip_env "$MDSRATE not built, skipping"
        # Setup the Lustre filesystem.
        log "setup the lustre filesystem"
        REFORMAT="yes" check_and_setup_lustre