Whamcloud - gitweb
LU-3540 lod: update recovery thread
[fs/lustre-release.git] / lustre / tests / conf-sanity.sh
index 006798d..811d99e 100644 (file)
@@ -4,8 +4,8 @@ set -e
 
 ONLY=${ONLY:-"$*"}
 
-# bug number for skipped test:     LU-2828
-ALWAYS_EXCEPT="$CONF_SANITY_EXCEPT 59 64"
+# bug number for skipped test:
+ALWAYS_EXCEPT="$CONF_SANITY_EXCEPT"
 # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
 
 is_sles11()                                            # LU-2181
@@ -59,6 +59,14 @@ STORED_OSTSIZE=$OSTSIZE
 MDSSIZE=200000
 OSTSIZE=200000
 
+fs2mds_HOST=$mds_HOST
+fs2ost_HOST=$ost_HOST
+fs3ost_HOST=$ost_HOST
+
+MDSDEV1_2=$fs2mds_DEV
+OSTDEV1_2=$fs2ost_DEV
+OSTDEV2_2=$fs3ost_DEV
+
 if ! combined_mgs_mds; then
     # bug number for skipped test:    23954
     ALWAYS_EXCEPT="$ALWAYS_EXCEPT       24b"
@@ -249,6 +257,16 @@ cleanup() {
        cleanup_nocli || return $?
 }
 
+cleanup_fs2() {
+       trap 0
+       echo "umount $MOUNT2 ..."
+       umount $MOUNT2 || true
+       echo "stopping fs2mds ..."
+       stop fs2mds -f || true
+       echo "stopping fs2ost ..."
+       stop fs2ost -f || true
+}
+
 check_mount() {
        do_facet client "cp /etc/passwd $DIR/a" || return 71
        do_facet client "rm $DIR/a" || return 72
@@ -303,9 +321,9 @@ test_1() {
 run_test 1 "start up ost twice (should return errors)"
 
 test_2() {
-       start_mdt 1 || error "MDT0 start fail"
+       start_mds || error "MDT start failed"
        echo "start mds second time.."
-       start_mdt 1 && error "2nd MDT start should fail"
+       start_mds && error "2nd MDT start should fail"
        start_ost || error "OST start failed"
        mount_client $MOUNT || error "mount_client failed to start client"
        check_mount || error "check_mount failed"
@@ -759,6 +777,58 @@ test_21d() {
 }
 run_test 21d "start mgs then ost and then mds"
 
+cleanup_21e() {
+       MGSNID="$saved_mgsnid"
+       cleanup_fs2
+       echo "stopping fs2mgs ..."
+       stop $fs2mgs -f || true
+}
+
+test_21e() { # LU-5863
+       if [[ -z "$fs3ost_DEV" || -z "$fs2ost_DEV" || -z "$fs2mds_DEV" ]]; then
+               is_blkdev $SINGLEMDS $(mdsdevname ${SINGLEMDS//mds/}) &&
+               skip_env "mixed loopback and real device not working" && return
+       fi
+
+       local fs2mdsdev=$(mdsdevname 1_2)
+       local fs2ostdev=$(ostdevname 1_2)
+       local fs3ostdev=$(ostdevname 2_2)
+
+       local fs2mdsvdev=$(mdsvdevname 1_2)
+       local fs2ostvdev=$(ostvdevname 1_2)
+       local fs3ostvdev=$(ostvdevname 2_2)
+
+       # temporarily use fs3ost as fs2mgs
+       local fs2mgs=fs3ost
+       local fs2mgsdev=$fs3ostdev
+       local fs2mgsvdev=$fs3ostvdev
+
+       local fsname=test1234
+
+       add $fs2mgs $(mkfs_opts mgs $fs2mgsdev) --fsname=$fsname \
+               --reformat $fs2mgsdev $fs2mgsvdev || error "add fs2mgs failed"
+       start $fs2mgs $fs2mgsdev $MGS_MOUNT_OPTS && trap cleanup_21e EXIT INT ||
+               error "start fs2mgs failed"
+
+       local saved_mgsnid="$MGSNID"
+       MGSNID=$(do_facet $fs2mgs $LCTL list_nids | xargs | tr ' ' ,)
+
+       add fs2mds $(mkfs_opts mds1 $fs2mdsdev $fsname) \
+               --reformat $fs2mdsdev $fs2mdsvdev || error "add fs2mds failed"
+       add fs2ost $(mkfs_opts ost1 $fs2ostdev $fsname) \
+               --reformat $fs2ostdev $fs2ostvdev || error "add fs2ost failed"
+
+       start fs2ost $fs2ostdev $OST_MOUNT_OPTS || error "start fs2ost failed"
+       start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS || error "start fs2mds failed"
+
+       mkdir -p $MOUNT2 || error "mkdir $MOUNT2 failed"
+       $MOUNT_CMD $MGSNID:/$fsname $MOUNT2 || error "mount $MOUNT2 failed"
+       DIR=$MOUNT2 MOUNT=$MOUNT2 check_mount || error "check $MOUNT2 failed"
+
+       cleanup_21e
+}
+run_test 21e "separate MGS and MDS"
+
 test_22() {
        start_mds || error "MDS start failed"
 
@@ -862,23 +932,6 @@ test_23b() {    # was test_23
 }
 run_test 23b "Simulate -EINTR during mount"
 
-fs2mds_HOST=$mds_HOST
-fs2ost_HOST=$ost_HOST
-
-MDSDEV1_2=$fs2mds_DEV
-OSTDEV1_2=$fs2ost_DEV
-OSTDEV2_2=$fs3ost_DEV
-
-cleanup_fs2() {
-       trap 0
-       echo "umount $MOUNT2 ..."
-       umount $MOUNT2 || true
-       echo "stopping fs2mds ..."
-       stop fs2mds -f || true
-       echo "stopping fs2ost ..."
-       stop fs2ost -f || true
-}
-
 test_24a() {
        local MDSDEV=$(mdsdevname ${SINGLEMDS//mds/})
 
@@ -1099,7 +1152,7 @@ test_28a() { # LU-4221
 
        # Check 3.
        # prepare a non-symlink parameter in the OSD
-       name="lma_self_repair"
+       name="auto_scrub"
        param="$device.osd.$name"
        cmd="$LCTL get_param -n osd-*.$device.$name"
 
@@ -1475,7 +1528,7 @@ t32_wait_til_devices_gone() {
        done
        echo "waiting for dev on $node: dev $devices loop $loops given up"
        do_rpc_nodes $node "losetup -a"
-       do_rpc_nodes $node "$LCTL devices_list"
+       do_rpc_nodes $node "$LCTL device_list"
        return 1
 }
 
@@ -1605,7 +1658,7 @@ t32_test() {
        echo "  Commit: $img_commit"
        echo "  Kernel: $img_kernel"
        echo "    Arch: $img_arch"
-       echo "OST version: $(get_lustre_version ost1)"
+       echo "OST version: $(lustre_build_version ost1)"
 
        # The conversion can be made only when both of the following
        # conditions are satisfied:
@@ -1780,6 +1833,10 @@ t32_test() {
                error_noexit "Setting \"lov.stripesize\""
                return 1
        }
+       $r $LCTL conf_param $fsname-MDT0000.mdd.atime_diff=70 || {
+               error_noexit "Setting \"mdd.atime_diff\""
+               return 1
+       }
 
        if [ "$ff_convert" != "no" -a $(facet_fstype ost1) == "ldiskfs" ]; then
                $r $LCTL lfsck_start -M $fsname-OST0000 || {
@@ -2293,7 +2350,6 @@ test_36() { # 12743
 
        local rc=0
        local FSNAME2=test1234
-       local fs3ost_HOST=$ost_HOST
        local MDSDEV=$(mdsdevname ${SINGLEMDS//mds/})
 
        [ -n "$ost1_HOST" ] && fs2ost_HOST=$ost1_HOST && fs3ost_HOST=$ost1_HOST
@@ -2511,9 +2567,14 @@ test_41a() { #bug 14134
 
        local MDSDEV=$(mdsdevname ${SINGLEMDS//mds/})
 
-       start $SINGLEMDS $MDSDEV $MDS_MOUNT_OPTS -o nosvc -n
+       start_mdt 1 -o nosvc -n
+       if [ $MDSCOUNT -ge 2 ]; then
+               for num in $(seq 2 $MDSCOUNT); do
+                       start_mdt $num || return
+               done
+       fi
        start ost1 $(ostdevname 1) $OST_MOUNT_OPTS
-       start $SINGLEMDS $MDSDEV $MDS_MOUNT_OPTS -o nomgs,force
+       start_mdt 1 -o nomgs,force
        mount_client $MOUNT || error "mount_client $MOUNT failed"
        sleep 5
 
@@ -2541,9 +2602,14 @@ test_41b() {
        reformat
        local MDSDEV=$(mdsdevname ${SINGLEMDS//mds/})
 
-       start $SINGLEMDS $MDSDEV $MDS_MOUNT_OPTS -o nosvc -n
+       start_mdt 1 -o nosvc -n
+       if [ $MDSCOUNT -ge 2 ]; then
+               for num in $(seq 2 $MDSCOUNT); do
+                       start_mdt $num || return
+               done
+       fi
        start_ost || error "Unable to start OST1"
-       start $SINGLEMDS $MDSDEV $MDS_MOUNT_OPTS -o nomgs,force
+       start_mdt 1 -o nomgs,force
        mount_client $MOUNT || error "mount_client $MOUNT failed"
        sleep 5
 
@@ -2568,7 +2634,7 @@ test_41c() {
                { skip "Need MDS version 2.5.4+ or 2.5.26+ or 2.6.52+"; return; }
 
        cleanup
-       # MDT concurent start
+       # MDT concurrent start
        #define OBD_FAIL_TGT_DELAY_CONNECT 0x703
        do_facet $SINGLEMDS "$LCTL set_param fail_loc=0x703"
        start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS &
@@ -2589,10 +2655,17 @@ test_41c() {
                echo "2nd MDT start succeed"
        else
                stop mds1 -f
-               error "unexpected concurent MDT mounts result, rc=$rc rc2=$rc2"
+               error "unexpected concurrent MDT mounts result, rc=$rc rc2=$rc2"
+       fi
+
+       if [ $MDSCOUNT -ge 2 ]; then
+               for num in $(seq 2 $MDSCOUNT); do
+                       start_mdt $num || return
+               done
        fi
 
-       # OST concurent start
+       # OST concurrent start
+
        #define OBD_FAIL_TGT_DELAY_CONNECT 0x703
        do_facet ost1 "$LCTL set_param fail_loc=0x703"
        start ost1 $(ostdevname 1) $OST_MOUNT_OPTS &
@@ -2612,26 +2685,26 @@ test_41c() {
                echo "1st OST start failed with EALREADY"
                echo "2nd OST start succeed"
        else
-               stop mds1 -f
+               stop_mds -f
                stop ost1 -f
-               error "unexpected concurent OST mounts result, rc=$rc rc2=$rc2"
+               error "unexpected concurrent OST mounts result, rc=$rc rc2=$rc2"
        fi
        # cleanup
-       stop mds1 -f
+       stop_mds
        stop ost1 -f
 
        # verify everything ok
        start_mds
        if [ $? != 0 ]
        then
-               stop mds1 -f
+               stop_mds
                error "MDT(s) start failed"
        fi
 
        start_ost
        if [ $? != 0 ]
        then
-               stop mds1 -f
+               stop_mds
                stop ost1 -f
                error "OST(s) start failed"
        fi
@@ -2639,20 +2712,20 @@ test_41c() {
        mount_client $MOUNT
        if [ $? != 0 ]
        then
-               stop mds1 -f
+               stop_mds
                stop ost1 -f
                error "client start failed"
        fi
        check_mount
        if [ $? != 0 ]
        then
-               stop mds1 -f
+               stop_mds
                stop ost1 -f
                error "client mount failed"
        fi
        cleanup
 }
-run_test 41c "concurent mounts of MDT/OST should all fail but one"
+run_test 41c "concurrent mounts of MDT/OST should all fail but one"
 
 test_42() { #bug 14693
        setup
@@ -2966,7 +3039,7 @@ run_test 47 "server restart does not make client loss lru_resize settings"
 cleanup_48() {
        trap 0
 
-       # reformat after this test is needed - if test will failed
+       # reformat after this test is needed - if the test fails,
        # we will have unkillable file at FS
        reformat_and_config
 }
@@ -3442,9 +3515,12 @@ test_52() {
        [ $? -eq 0 ] || { error "Unable to move objects"; return 14; }
 
        # recover objects dry-run
-       echo "ll_recover_lost_found_objs dry_run"
-       do_node $ost1node "ll_recover_lost_found_objs -n -d $ost1mnt/O" ||
-               error "ll_recover_lost_found_objs failed"
+       if [ $(lustre_version_code ost1) -ge $(version_code 2.5.56) ]; then
+               echo "ll_recover_lost_found_objs dry_run"
+               do_node $ost1node \
+                       "ll_recover_lost_found_objs -n -d $ost1mnt/O" ||
+                       error "ll_recover_lost_found_objs failed"
+       fi
 
        # recover objects
        echo "ll_recover_lost_found_objs fix run"
@@ -3672,6 +3748,7 @@ test_55() {
 run_test 55 "check lov_objid size"
 
 test_56() {
+       local server_version=$(lustre_version_code $SINGLEMDS)
        local mds_journal_size_orig=$MDSJOURNALSIZE
        local n
 
@@ -3692,13 +3769,19 @@ test_56() {
        mount_client $MOUNT || error "Unable to mount client"
        echo ok
        $LFS osts
-       wait_osc_import_state mds ost1 FULL
-       wait_osc_import_state mds ost2 FULL
-       $SETSTRIPE --stripe-count=-1 $DIR/$tfile ||
-               error "Unable to setstripe $DIR/$tfile"
-       n=$($LFS getstripe --stripe-count $DIR/$tfile)
-       [ "$n" -eq 2 ] || error "Stripe count not two: $n"
-       rm $DIR/$tfile
+
+       if [[ $server_version -ge $(version_code 2.6.54) ]] ||
+          [[ $server_version -ge $(version_code 2.5.4) &&
+             $server_version -lt $(version_code 2.5.11) ]]; then
+               wait_osc_import_state mds ost1 FULL
+               wait_osc_import_state mds ost2 FULL
+               $SETSTRIPE --stripe-count=-1 $DIR/$tfile ||
+                       error "Unable to setstripe $DIR/$tfile"
+               n=$($LFS getstripe --stripe-count $DIR/$tfile)
+               [ "$n" -eq 2 ] || error "Stripe count not two: $n"
+               rm $DIR/$tfile
+       fi
+
        stopall
        MDSJOURNALSIZE=$mds_journal_size_orig
        reformat
@@ -4223,8 +4306,9 @@ test_70a() {
        start_mdt 1 || error "MDT0 start fail"
 
        start_ost || error "OST0 start fail"
-
-       start_mdt 2 || error "MDT1 start fail"
+       for num in $(seq 2 $MDSCOUNT); do
+               start_mdt $num || return
+       done
 
        mount_client $MOUNT || error "mount client fails"
 
@@ -4244,8 +4328,7 @@ test_70b() {
 
        start_ost || error "OST0 start fail"
 
-       start_mdt 1 || error "MDT0 start fail"
-       start_mdt 2 || error "MDT1 start fail"
+       start_mds || error "MDS start fail"
 
        mount_client $MOUNT || error "mount client fails"
 
@@ -4264,8 +4347,7 @@ test_70c() {
        [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
        local MDTIDX=1
 
-       start_mdt 1 || error "MDT0 start fail"
-       start_mdt 2 || error "MDT1 start fail"
+       start_mds || error "MDS start fail"
        start_ost || error "OST0 start fail"
 
        mount_client $MOUNT || error "mount client fails"
@@ -4289,8 +4371,7 @@ test_70d() {
        [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
        local MDTIDX=1
 
-       start_mdt 1 || error "MDT0 start fail"
-       start_mdt 2 || error "MDT1 start fail"
+       start_mds || error "MDS start fail"
        start_ost || error "OST0 start fail"
 
        mount_client $MOUNT || error "mount client fails"
@@ -4322,7 +4403,10 @@ test_71a() {
 
        start_mdt 1 || error "MDT0 start fail"
        start_ost || error "OST0 start fail"
-       start_mdt 2 || error "MDT1 start fail"
+       for num in $(seq 2 $MDSCOUNT); do
+               start_mdt $num || return
+       done
+
        start_ost2 || error "OST1 start fail"
 
        mount_client $MOUNT || error "mount client fails"
@@ -4335,8 +4419,7 @@ test_71a() {
        rm -rf $DIR/$tdir || error "delete dir fail"
 
        umount_client $MOUNT || error "umount_client failed"
-       stop_mdt 1 || error "MDT0 stop fail"
-       stop_mdt 2 || error "MDT1 stop fail"
+       stop_mds || error "MDS stop fail"
        stop_ost || error "OST0 stop fail"
        stop_ost2 || error "OST1 stop fail"
 }
@@ -4349,7 +4432,9 @@ test_71b() {
        fi
        local MDTIDX=1
 
-       start_mdt 2 || error "MDT1 start fail"
+       for num in $(seq 2 $MDSCOUNT); do
+               start_mdt $num || return
+       done
        start_ost || error "OST0 start fail"
        start_mdt 1 || error "MDT0 start fail"
        start_ost2 || error "OST1 start fail"
@@ -4364,8 +4449,7 @@ test_71b() {
        rm -rf $DIR/$tdir || error "delete dir fail"
 
        umount_client $MOUNT || error "umount_client failed"
-       stop_mdt 1 || error "MDT0 stop fail"
-       stop_mdt 2 || error "MDT1 stop fail"
+       stop_mds || error "MDT0 stop fail"
        stop_ost || error "OST0 stop fail"
        stop_ost2 || error "OST1 stop fail"
 }
@@ -4380,7 +4464,9 @@ test_71c() {
 
        start_ost || error "OST0 start fail"
        start_ost2 || error "OST1 start fail"
-       start_mdt 2 || error "MDT1 start fail"
+       for num in $(seq 2 $MDSCOUNT); do
+               start_mdt $num || return
+       done
        start_mdt 1 || error "MDT0 start fail"
 
        mount_client $MOUNT || error "mount client fails"
@@ -4393,8 +4479,7 @@ test_71c() {
        rm -rf $DIR/$tdir || error "delete dir fail"
 
        umount_client $MOUNT || error "umount_client failed"
-       stop_mdt 1 || error "MDT0 stop fail"
-       stop_mdt 2 || error "MDT1 stop fail"
+       stop_mds || error "MDS stop fail"
        stop_ost || error "OST0 stop fail"
        stop_ost2 || error "OST1 stop fail"
 
@@ -4409,7 +4494,9 @@ test_71d() {
        local MDTIDX=1
 
        start_ost || error "OST0 start fail"
-       start_mdt 2 || error "MDT0 start fail"
+       for num in $(seq 2 $MDSCOUNT); do
+               start_mdt $num || return
+       done
        start_mdt 1 || error "MDT0 start fail"
        start_ost2 || error "OST1 start fail"
 
@@ -4423,8 +4510,7 @@ test_71d() {
        rm -rf $DIR/$tdir || error "delete dir fail"
 
        umount_client $MOUNT || error "umount_client failed"
-       stop_mdt 1 || error "MDT0 stop fail"
-       stop_mdt 2 || error "MDT1 stop fail"
+       stop_mds || error "MDS stop fail"
        stop_ost || error "OST0 stop fail"
        stop_ost2 || error "OST1 stop fail"
 
@@ -4439,7 +4525,9 @@ test_71e() {
        local MDTIDX=1
 
        start_ost || error "OST0 start fail"
-       start_mdt 2 || error "MDT1 start fail"
+       for num in $(seq 2 $MDSCOUNT); do
+               start_mdt $num || return
+       done
        start_ost2 || error "OST1 start fail"
        start_mdt 1 || error "MDT0 start fail"
 
@@ -4453,8 +4541,7 @@ test_71e() {
        rm -rf $DIR/$tdir || error "delete dir fail"
 
        umount_client $MOUNT || error "umount_client failed"
-       stop_mdt 1 || error "MDT0 stop fail"
-       stop_mdt 2 || error "MDT1 stop fail"
+       stop_mds || error "MDS stop fail"
        stop_ost || error "OST0 stop fail"
        stop_ost2 || error "OST1 stop fail"
 
@@ -4476,7 +4563,8 @@ test_72() { #LU-2634
                add mds${num} $(mkfs_opts mds$num $(mdsdevname $num)) \
                --reformat $(mdsdevname $num) $(mdsvdevname $num) ||
                error "add mds $num failed"
-               $TUNE2FS -O extents $(mdsdevname $num)
+               do_facet mds${num} "$TUNE2FS -O extents $(mdsdevname $num)" ||
+                       error "$TUNE2FS failed on mds${num}"
        done
 
        add ost1 $(mkfs_opts ost1 $ostdev) --reformat $ostdev ||
@@ -5166,16 +5254,18 @@ test_82b() { # LU-4665
 run_test 82b "specify OSTs for file with --pool and --ost-list options"
 
 test_83() {
-       local dev
-       local ostmnt
-       local fstype
-       local mnt_opts
-
+       [[ $(lustre_version_code ost1) -ge $(version_code 2.6.91) ]] ||
+               { skip "Need OST version at least 2.6.91" && return 0; }
        if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
                skip "Only applicable to ldiskfs-based MDTs"
                return
        fi
 
+       local dev
+       local ostmnt
+       local fstype
+       local mnt_opts
+
        dev=$(ostdevname 1)
        ostmnt=$(facet_mntpt ost1)
        fstype=$(facet_fstype ost1)