Whamcloud - gitweb
LU-11607 tests: replace lustre_version/fstype - large-lun
[fs/lustre-release.git] / lustre / tests / large-lun.sh
index 2dbc03e..5f3f80b 100644 (file)
@@ -11,6 +11,11 @@ init_test_env $@
 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
 init_logging
 
+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}
@@ -35,12 +40,23 @@ RUN_FSCK=${RUN_FSCK:-true}
 [[ $SLOW = yes ]] && FULL_MODE=true
 #########################################################################
 # Dump the super block information for the filesystem present on device.
-run_dumpe2fs() {
+run_dumpfs() {
        local facet=$1
        local dev=$2
+       local cmd
 
        log "dump the super block information on $facet device $dev"
-       local cmd="$DUMPE2FS -h $dev"
+       local fstype=$(facet_fstype $facet)
+
+       case $fstype in
+               ldiskfs )
+                       cmd="$DUMPE2FS -h $dev" ;;
+               zfs )
+                       cmd="$ZDB -l $(facet_vdevice $facet)" ;;
+               * )
+                       error "unknown fstype!" ;;
+       esac
+
        do_facet $facet "$cmd"
 }
 
@@ -66,7 +82,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"
 }
 
@@ -101,55 +117,83 @@ run_mdsrate() {
        fi
 }
 
+check_fsfacet() {
+       local facet=$1
+       local fstype=$(facet_fstype $facet)
+
+       case $fstype in
+           ldiskfs)
+               run_e2fsck $(facet_active_host $facet) $(facet_device $facet) \
+                   "-y" || error "run e2fsck error"
+               ;;
+           zfs)
+               # Could call fsck.zfs, but currently it does nothing,
+               # Could also call zpool scrub, but that could take a LONG time
+               # do_facet $facet "fsck.zfs $(facet_device $facet)"
+               ;;
+       esac
+}
+
 # Run e2fsck on MDS and OST
 do_fsck() {
        $RUN_FSCK || return
-       local dev
-       run_e2fsck $(facet_host $SINGLEMDS) $(mdsdevname ${SINGLEMDS//mds/}) \
-               "-y" || error "run e2fsck error"
+
+       check_fsfacet $SINGLEMDS
+
        for num in $(seq $OSTCOUNT); do
-               dev=$(ostdevname $num)
-               run_e2fsck $(facet_host ost${num}) $dev "-y" ||
-                       error "run e2fsck error"
+               check_fsfacet ost${num}
        done
 }
 ################################## Main Flow ###################################
 trap cleanupall EXIT
 
 test_1 () {
+       [ "$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"
 
 test_2 () {
        local dev
        local ostmnt
+       local fstype
 
        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.
-               log "mount the OST $dev as a ldiskfs filesystem"
-               add ost${num} $(mkfs_opts ost${num}) $FSTYPE_OPT --reformat \
-                       $(ostdevname $num) > /dev/null ||
+               log "mount the OST $dev as a $fstype filesystem"
+               add ost${num} $(mkfs_opts ost${num} $dev) $FSTYPE_OPT \
+                       --reformat $(ostdevname $num) \
+                       $(ostvdevname $num) > /dev/null ||
                        error "format ost${num} error"
-               run_dumpe2fs ost${num} $dev
-               do_facet ost${num} mount -t $(facet_fstype ost${num}) $dev \
+               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"
+               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
                # 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 ldiskfs $ostmnt"
+               log "run llverfs in partial mode on the OST $fstype $ostmnt"
                do_rpc_nodes $(facet_host ost${num}) run_llverfs $ostmnt -vpl \
-                       "no" || error "run_llverfs error on ldiskfs"
+                       "no" || error "run_llverfs error on $fstype"
 
                # Unmount the OST.
                log "unmount the OST $dev"
@@ -157,25 +201,27 @@ test_2 () {
 
                # After llverfs is run on the ldiskfs filesystem in partial
                # mode, a full e2fsck should be run to catch any errors early.
-               $RUN_FSCK && run_e2fsck $(facet_host ost${num}) $dev "-y" ||
-                       error "run e2fsck error"
+               $RUN_FSCK && check_fsfacet ost${num}
 
                if $FULL_MODE; then
-                       log "full mode, mount the OST $dev as a ldiskfs again"
+                       log "full mode, mount the OST $dev as a $fstype again"
+                       if [ $fstype == zfs ]; then
+                               import_zpool ost${num}
+                       fi
                        do_facet ost${num} mount -t $(facet_fstype ost${num}) \
                                $dev $ostmnt "$OST_MOUNT_OPTS"
                        cleanup_dirs ost${num} $ostmnt
                        do_facet ost${num} "sync"
 
-                       run_dumpe2fs ost${num} $dev
+                       run_dumpfs ost${num} $dev
 
                        # Run llverfs on the mounted ldiskfs filesystem in full
                        # mode to ensure that the kernel can perform filesystem
                        # operations on the complete device without any errors.
-                       log "run llverfs in full mode on OST ldiskfs $ostmnt"
+                       log "run llverfs in full mode on OST $fstype $ostmnt"
                        do_rpc_nodes $(facet_host ost${num}) run_llverfs \
                                $ostmnt -vl "no" ||
-                               error "run_llverfs error on ldiskfs"
+                               error "run_llverfs error on $fstype"
 
                        # Unmount the OST.
                        log "unmount the OST $dev"
@@ -184,18 +230,20 @@ test_2 () {
                        # After llverfs is run on the ldiskfs filesystem in
                        # full mode, a full e2fsck should be run to catch any
                        #  errors early.
-                       $RUN_FSCK && run_e2fsck $(facet_host ost${num}) $dev \
-                               "-y" || error "run e2fsck error"
+                       $RUN_FSCK && check_fsfacet ost${num}
                fi
        done
+       # there is no reason to continue using ost devices
+       # filled by llverfs as ldiskfs
+       formatall
 }
-run_test 2 "run llverfs on OST ldiskfs filesystem"
+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
@@ -219,7 +267,7 @@ test_4 () {
 
        for num in $(seq $OSTCOUNT); do
                dev=$(ostdevname $num)
-               run_dumpe2fs ost${num} $dev
+               run_dumpfs ost${num} $dev
        done
 
        # Run llverfs on the mounted Lustre filesystem both in partial and
@@ -243,7 +291,7 @@ test_4 () {
 
                for num in $(seq $OSTCOUNT); do
                        dev=$(ostdevname $num)
-                       run_dumpe2fs ost${num} $dev
+                       run_dumpfs ost${num} $dev
                done
 
                log "run llverfs in full mode on the Lustre filesystem $MOUNT"