Whamcloud - gitweb
LU-3802 tests: only start mdt0 for conf-sanity 68
[fs/lustre-release.git] / lustre / tests / conf-sanity.sh
index 52a4031..1f22874 100644 (file)
@@ -871,8 +871,8 @@ test_23a() {        # was test_23
                "MOUNT_LUSTRE_PID $MOUNT_LUSTRE_PID still not killed in $WAIT secs"
                ps -ef | grep mount
        fi
-       stop_mds || error
-       stop_ost || error
+       stop_mds || error "stopping MDSes failed"
+       stop_ost || error "stopping OSSes failed"
 }
 run_test 23a "interrupt client during recovery mount delay"
 
@@ -1325,11 +1325,6 @@ t32_check() {
                exit 0
        fi
 
-       if [ -n "$($LCTL list_nids | grep -v '\(tcp\|lo\)[[:digit:]]*$')" ]; then
-               skip "LU-2200: Test cannot run over Infiniband"
-               exit 0
-       fi
-
        local IMGTYPE=$(facet_fstype $SINGLEMDS)
 
        tarballs=$($r find $RLUSTRE/tests -maxdepth 1 -name \'disk*-$IMGTYPE.tar.bz2\')
@@ -1495,6 +1490,7 @@ t32_test() {
        local tarball=$1
        local writeconf=$2
        local dne_upgrade=${dne_upgrade:-"no"}
+       local ff_convert=${ff_convert:-"no"}
        local shall_cleanup_mdt=false
        local shall_cleanup_mdt1=false
        local shall_cleanup_ost=false
@@ -1535,6 +1531,9 @@ t32_test() {
        echo "  Kernel: $img_kernel"
        echo "    Arch: $img_arch"
 
+       local version=$(version_code $img_commit)
+       [[ $version -gt $(version_code 2.4.0) ]] && ff_convert="no"
+
        $r $LCTL set_param debug="$PTLDEBUG"
 
        $r $TUNEFS --dryrun $tmp/mdt || {
@@ -1550,6 +1549,20 @@ t32_test() {
                        }
                fi
        else
+               if [ -n "$($LCTL list_nids | grep -v '\(tcp\|lo\)[[:digit:]]*$')" ]; then
+                       [[ $(lustre_version_code mgs) -ge $(version_code 2.3.59) ]] ||
+                       { skip "LU-2200: Cannot run over Inifiniband w/o lctl replace_nids "
+                               "(Need MGS version at least 2.3.59)"; return 0; }
+
+                       local osthost=$(facet_active_host ost1)
+                       local ostnid=$(do_node $osthost $LCTL list_nids | head -1)
+
+                       $r mount -t lustre -o loop,nosvc $tmp/mdt $tmp/mnt/mdt
+                       $r lctl replace_nids $fsname-OST0000 $ostnid
+                       $r lctl replace_nids $fsname-MDT0000 $nid
+                       $r umount $tmp/mnt/mdt
+               fi
+
                mopts=loop,exclude=$fsname-OST0000
        fi
 
@@ -1654,6 +1667,30 @@ t32_test() {
                return 1
        }
 
+       if [ "$ff_convert" != "no" -a $(facet_fstype ost1) == "ldiskfs" ]; then
+               $r $LCTL lfsck_start -M $fsname-OST0000 || {
+                       error_noexit "Start OI scrub on OST0"
+                       return 1
+               }
+
+               # The oi_scrub should be on ost1, but for test_32(),
+               # all on the SINGLEMDS.
+               wait_update_facet $SINGLEMDS "$LCTL get_param -n \
+                       osd-ldiskfs.$fsname-OST0000.oi_scrub |
+                       awk '/^status/ { print \\\$2 }'" "completed" 30 || {
+                       error_noexit "Failed to get the expected 'completed'"
+                       return 1
+               }
+
+               local UPDATED=$($r $LCTL get_param -n \
+                               osd-ldiskfs.$fsname-OST0000.oi_scrub |
+                               awk '/^updated/ { print $2 }')
+               [ $UPDATED -ge 1 ] || {
+                       error_noexit "Only $UPDATED objects have been converted"
+                       return 1
+               }
+       fi
+
        if [ "$dne_upgrade" != "no" ]; then
                $r $LCTL conf_param \
                                $fsname-MDT0001.mdc.max_rpcs_in_flight=9 || {
@@ -1760,8 +1797,8 @@ t32_test() {
                        # on an architecture with different number of bits per
                        # "long".
                        #
-                       if [ $(t32_bits_per_long $(uname -m)) !=                                                \
-                                $(t32_bits_per_long $img_arch) ]; then
+                       if [ $(t32_bits_per_long $(uname -m)) != \
+                               $(t32_bits_per_long $img_arch) ]; then
                                echo "Different number of bits per \"long\" from the disk image"
                                for list in list.orig list; do
                                        sed -i -e 's/^[0-9]\+[ \t]\+//' $tmp/$list
@@ -1834,7 +1871,7 @@ t32_test() {
                        error_noexit "tunefs.lustre before remounting the MDT"
                        return 1
                }
-               $r mount -t lustre -o loop,exclude=$fsname-OST0000 $tmp/mdt                     \
+               $r mount -t lustre -o loop,exclude=$fsname-OST0000 $tmp/mdt \
                                 $tmp/mnt/mdt || {
                        error_noexit "Remounting the MDT"
                        return 1
@@ -1850,7 +1887,7 @@ test_32a() {
 
        t32_check
        for tarball in $tarballs; do
-               t32_test $tarball || rc=$?
+               t32_test $tarball || let "rc += $?"
        done
        return $rc
 }
@@ -1863,7 +1900,7 @@ test_32b() {
 
        t32_check
        for tarball in $tarballs; do
-               t32_test $tarball writeconf || rc=$?
+               t32_test $tarball writeconf || let "rc += $?"
        done
        return $rc
 }
@@ -1883,6 +1920,19 @@ test_32c() {
 }
 run_test 32c "dne upgrade test"
 
+test_32d() {
+       local tarballs
+       local tarball
+       local rc=0
+
+       t32_check
+       for tarball in $tarballs; do
+               ff_convert=yes t32_test $tarball || rc=$?
+       done
+       return $rc
+}
+run_test 32d "convert ff test"
+
 test_33a() { # bug 12333, was test_33
         local rc=0
         local FSNAME2=test-123
@@ -1999,9 +2049,10 @@ test_35a() { # bug 12459
 
        log "Set up a fake failnode for the MDS"
        FAKENID="127.0.0.2"
-       local device=$(do_facet $SINGLEMDS "lctl get_param -n devices" | awk '($3 ~ "mdt" && $4 ~ "MDT") { print $4 }' | head -1)
-       do_facet mgs "$LCTL conf_param ${device}.failover.node=" \
-               "$(h2$NETTYPE $FAKENID)" || return 4
+       local device=$(do_facet $SINGLEMDS "lctl get_param -n devices" |
+               awk '($3 ~ "mdt" && $4 ~ "MDT") { print $4 }' | head -1)
+       do_facet mgs "$LCTL conf_param \
+               ${device}.failover.node=$(h2$NETTYPE $FAKENID)" || return 4
 
        log "Wait for RECONNECT_INTERVAL seconds (10s)"
        sleep 10
@@ -2053,10 +2104,10 @@ test_35b() { # bug 18674
 
        log "Set up a fake failnode for the MDS"
        FAKENID="127.0.0.2"
-       local device=$(do_facet $SINGLEMDS "$LCTL get_param -n devices" | \
-                       awk '($3 ~ "mdt" && $4 ~ "MDT") { print $4 }' | head -1)
-       do_facet mgs "$LCTL conf_param ${device}.failover.node=" \
-               "$(h2$NETTYPE $FAKENID)" || return 1
+       local device=$(do_facet $SINGLEMDS "$LCTL get_param -n devices" |
+               awk '($3 ~ "mdt" && $4 ~ "MDT") { print $4 }' | head -1)
+       do_facet mgs "$LCTL conf_param \
+               ${device}.failover.node=$(h2$NETTYPE $FAKENID)" || return 1
 
        local at_max_saved=0
        # adaptive timeouts may prevent seeing the issue
@@ -3231,7 +3282,7 @@ thread_sanity() {
         tmin=$(do_facet $facet "lctl get_param -n ${paramp}.threads_min")
         tmax=$(do_facet $facet "lctl get_param -n ${paramp}.threads_max")
         tstarted=$(do_facet $facet "lctl get_param -n ${paramp}.threads_started")
-        lassert 28 "$msg" '(($tstarted == $tmin && $tstarted == $tmax ))' || return $?
+        lassert 28 "$msg" '(($tstarted >= $tmin && $tstarted <= $tmax ))' || return $?
         cleanup
 
         load_modules
@@ -3353,6 +3404,7 @@ run_test 56 "check big indexes"
 test_57a() { # bug 22656
        local NID=$(do_facet ost1 "$LCTL get_param nis" | tail -1 | awk '{print $1}')
        writeconf_or_reformat
+       [ $(facet_fstype ost1) == zfs ] && import_zpool ost1
        do_facet ost1 "$TUNEFS --failnode=$NID `ostdevname 1`" || error "tunefs failed"
        start_mgsmds
        start_ost && error "OST registration from failnode should fail"
@@ -3363,6 +3415,7 @@ run_test 57a "initial registration from failnode should fail (should return errs
 test_57b() {
        local NID=$(do_facet ost1 "$LCTL get_param nis" | tail -1 | awk '{print $1}')
        writeconf_or_reformat
+       [ $(facet_fstype ost1) == zfs ] && import_zpool ost1
        do_facet ost1 "$TUNEFS --servicenode=$NID `ostdevname 1`" || error "tunefs failed"
        start_mgsmds
        start_ost || error "OST registration from servicenode should not fail"
@@ -3705,6 +3758,110 @@ test_66() {
 }
 run_test 66 "replace nids"
 
+test_67() { #LU-2950
+       local legacy="$TMP/legacy_lnet_config"
+       local new="$TMP/new_routes_test"
+       local out="$TMP/config_out_file"
+       local verify="$TMP/conv_verify"
+       local verify_conf="$TMP/conf_verify"
+
+       # Create the legacy file that will be run through the
+       # lustre_routes_conversion script
+       cat <<- LEGACY_LNET_CONFIG > $legacy
+               tcp1 23 192.168.213.1@tcp:1; tcp5 34 193.30.4.3@tcp:4;
+               tcp2 54 10.1.3.2@tcp;
+               tcp3 10.3.4.3@tcp:3;
+               tcp4 10.3.3.4@tcp;
+       LEGACY_LNET_CONFIG
+
+       # Create the verification file to verify the output of
+       # lustre_routes_conversion script against.
+       cat <<- VERIFY_LNET_CONFIG > $verify
+               tcp1: { gateway: 192.168.213.1@tcp, hop: 23, priority: 1 }
+               tcp5: { gateway: 193.30.4.3@tcp, hop: 34, priority: 4 }
+               tcp2: { gateway: 10.1.3.2@tcp, hop: 54 }
+               tcp3: { gateway: 10.3.4.3@tcp, priority: 3 }
+               tcp4: { gateway: 10.3.3.4@tcp }
+       VERIFY_LNET_CONFIG
+
+       # Create the verification file to verify the output of
+       # lustre_routes_config script against
+       cat <<- VERIFY_LNET_CONFIG > $verify_conf
+               lctl --net tcp1 add_route 192.168.213.1@tcp 23 1
+               lctl --net tcp5 add_route 193.30.4.3@tcp 34 4
+               lctl --net tcp2 add_route 10.1.3.2@tcp 54 4
+               lctl --net tcp3 add_route 10.3.4.3@tcp 1 3
+               lctl --net tcp4 add_route 10.3.3.4@tcp 1 3
+       VERIFY_LNET_CONFIG
+
+       lustre_routes_conversion $legacy $new > /dev/null
+       if [ -f $new ]; then
+               # verify the conversion output
+               cmp -s $new $verify > /dev/null
+               if [ $? -eq 1 ]; then
+                       error "routes conversion failed"
+               fi
+
+               lustre_routes_config --dry-run --verbose $new > $out
+               # check that the script succeeded
+               cmp -s $out $verify_conf > /dev/null
+               if [ $? -eq 1 ]; then
+                       error "routes config failed"
+               fi
+       else
+               error "routes conversion test failed"
+       fi
+       # remove generated files
+       rm -f $new $legacy $verify $verify_conf $out
+}
+run_test 67 "test routes conversion and configuration"
+
+test_68() {
+       local fid
+       local seq
+       local START
+       local END
+
+       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.4.53) ] ||
+               { skip "Need MDS version at least 2.4.53"; return 0; }
+
+       umount_client $MOUNT || error "umount client failed"
+
+       start_mdt 1 || error "MDT start failed"
+       start_ost
+
+       # START-END - the sequences we'll be reserving
+       START=$(do_facet $SINGLEMDS \
+               lctl get_param -n seq.ctl*.space | awk -F'[[ ]' '{print $2}')
+       END=$((START + (1 << 30)))
+       do_facet $SINGLEMDS \
+               lctl set_param seq.ctl*.fldb="[$START-$END\):0:mdt"
+
+       # reset the sequences MDT0000 has already assigned
+       do_facet $SINGLEMDS \
+               lctl set_param seq.srv*MDT0000.space=clear
+
+       # remount to let the client allocate new sequence
+       mount_client $MOUNT || error "mount client failed"
+
+       touch $DIR/$tfile
+       do_facet $SINGLEMDS \
+               lctl get_param seq.srv*MDT0000.space
+       $LFS path2fid $DIR/$tfile
+
+       local old_ifs="$IFS"
+       IFS='[:]'
+       fid=($($LFS path2fid $DIR/$tfile))
+       IFS="$old_ifs"
+       let seq=${fid[1]}
+
+       if [[ $seq < $END ]]; then
+               error "used reserved sequence $seq?"
+       fi
+       cleanup || return $?
+}
+run_test 68 "be able to reserve specific sequences in FLDB"
+
 test_70a() {
        [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
        local MDTIDX=1
@@ -3994,13 +4151,14 @@ run_test 72 "test fast symlink with extents flag enabled"
 
 test_73() { #LU-3006
        load_modules
-       do_facet ost1 "$TUNEFS --failnode=1.2.3.4@tcp $(ostdevname 1)" ||
+       [ $(facet_fstype ost1) == zfs ] && import_zpool ost1
+       do_facet ost1 "$TUNEFS --failnode=1.2.3.4@$NETTYPE $(ostdevname 1)" ||
                error "1st tunefs failed"
        start_mgsmds || error "start mds failed"
        start_ost || error "start ost failed"
        mount_client $MOUNT || error "mount client failed"
        lctl get_param -n osc.*OST0000-osc-[^M]*.import | grep failover_nids |
-               grep 1.2.3.4@tcp || error "failover nids haven't changed"
+               grep 1.2.3.4@$NETTYPE || error "failover nids haven't changed"
        umount_client $MOUNT || error "umount client failed"
        stopall
        reformat
@@ -4018,6 +4176,133 @@ test_74() { # LU-1606
 }
 run_test 74 "Lustre client api program can compile and link"
 
+test_75() { # LU-2374
+       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.1) ]] &&
+                       skip "Need MDS version at least 2.4.1" && return
+
+       local index=0
+       local opts_mds="$(mkfs_opts mds1 $(mdsdevname 1)) \
+               --reformat $(mdsdevname 1) $(mdsvdevname 1)"
+       local opts_ost="$(mkfs_opts ost1 $(ostdevname 1)) \
+               --reformat $(ostdevname 1) $(ostvdevname 1)"
+
+       #check with default parameters
+       add mds1 $opts_mds || error "add mds1 failed for default params"
+       add ost1 $opts_ost || error "add ost1 failed for default params"
+
+       opts_mds=$(echo $opts_mds | sed -e "s/--mdt//")
+       opts_mds=$(echo $opts_mds |
+                  sed -e "s/--index=$index/--index=$index --mdt/")
+       opts_ost=$(echo $opts_ost | sed -e "s/--ost//")
+       opts_ost=$(echo $opts_ost |
+                  sed -e "s/--index=$index/--index=$index --ost/")
+
+       add mds1 $opts_mds || error "add mds1 failed for new params"
+       add ost1 $opts_ost || error "add ost1 failed for new params"
+       return 0
+}
+run_test 75 "The order of --index should be irrelevant"
+
+test_76() {
+       [[ $(lustre_version_code mgs) -ge $(version_code 2.4.52) ]] ||
+               { skip "Need MDS version at least 2.4.52" && return 0; }
+       setup
+       local MDMB_PARAM="osc.*.max_dirty_mb"
+       echo "Change MGS params"
+       local MAX_DIRTY_MB=$($LCTL get_param -n $MDMB_PARAM |
+               head -1)
+       echo "max_dirty_mb: $MAX_DIRTY_MB"
+       local NEW_MAX_DIRTY_MB=$((MAX_DIRTY_MB + MAX_DIRTY_MB))
+       echo "new_max_dirty_mb: $NEW_MAX_DIRTY_MB"
+       do_facet mgs $LCTL set_param -P $MDMB_PARAM=$NEW_MAX_DIRTY_MB
+       wait_update $HOSTNAME "lctl get_param -n $MDMB_PARAM |
+               head -1" $NEW_MAX_DIRTY_MB
+       MAX_DIRTY_MB=$($LCTL get_param -n $MDMB_PARAM | head -1)
+       echo "$MAX_DIRTY_MB"
+       [ $MAX_DIRTY_MB = $NEW_MAX_DIRTY_MB ] ||
+               error "error while apply max_dirty_mb"
+
+       echo "Check the value is stored after remount"
+       stopall
+       setupall
+       wait_update $HOSTNAME "lctl get_param -n $MDMB_PARAM |
+               head -1" $NEW_MAX_DIRTY_MB
+       MAX_DIRTY_MB=$($LCTL get_param -n $MDMB_PARAM | head -1)
+       [ $MAX_DIRTY_MB = $NEW_MAX_DIRTY_MB ] ||
+               error "max_dirty_mb is not saved after remount"
+
+       echo "Change OST params"
+       CLIENT_PARAM="obdfilter.*.client_cache_count"
+       local CLIENT_CACHE_COUNT
+       CLIENT_CACHE_COUNT=$(do_facet ost1 $LCTL get_param -n $CLIENT_PARAM |
+               head -1)
+       echo "client_cache_count: $CLIENT_CACHE_COUNT"
+       NEW_CLIENT_CACHE_COUNT=$((CLIENT_CACHE_COUNT+CLIENT_CACHE_COUNT))
+       echo "new_client_cache_count: $NEW_CLIENT_CACHE_COUNT"
+       do_facet mgs $LCTL set_param -P $CLIENT_PARAM=$NEW_CLIENT_CACHE_COUNT
+       wait_update $(facet_host ost1) "lctl get_param -n $CLIENT_PARAM |
+               head -1" $NEW_CLIENT_CACHE_COUNT
+       CLIENT_CACHE_COUNT=$(do_facet ost1 $LCTL get_param -n $CLIENT_PARAM |
+               head -1)
+       echo "$CLIENT_CACHE_COUNT"
+       [ $CLIENT_CACHE_COUNT = $NEW_CLIENT_CACHE_COUNT ] ||
+               error "error while apply client_cache_count"
+
+       echo "Check the value is stored after remount"
+       stopall
+       setupall
+       wait_update $(facet_host ost1) "lctl get_param -n $CLIENT_PARAM |
+               head -1" $NEW_CLIENT_CACHE_COUNT
+       CLIENT_CACHE_COUNT=$(do_facet ost1 $LCTL get_param -n $CLIENT_PARAM |
+               head -1)
+       echo "$CLIENT_CACHE_COUNT"
+       [ $CLIENT_CACHE_COUNT = $NEW_CLIENT_CACHE_COUNT ] ||
+               error "client_cache_count is not saved after remount"
+       stopall
+}
+run_test 76 "set permanent params set_param -P"
+
+test_77() { # LU-3445
+       local server_version=$(lustre_version_code $SINGLEMDS)
+
+       [[ $server_version -ge $(version_code 2.2.60) ]] &&
+       [[ $server_version -le $(version_code 2.4.0) ]] &&
+               skip "Need MDS version < 2.2.60 or > 2.4.0" && return
+
+       if [[ -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 fs2mdsvdev=$(mdsvdevname 1_2)
+       local fs2ostvdev=$(ostvdevname 1_2)
+       local fsname=test1234
+       local mgsnid
+       local failnid="$(h2$NETTYPE 1.2.3.4),$(h2$NETTYPE 4.3.2.1)"
+
+       add fs2mds $(mkfs_opts mds1 $fs2mdsdev) --mgs --fsname=$fsname \
+               --reformat $fs2mdsdev $fs2mdsvdev || error "add fs2mds failed"
+       start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS && trap cleanup_24a EXIT INT ||
+               error "start fs2mds failed"
+
+       mgsnid=$(do_facet fs2mds $LCTL list_nids | xargs | tr ' ' ,)
+       [[ $mgsnid = *,* ]] || mgsnid+=",$mgsnid"
+
+       add fs2ost $(mkfs_opts ost1 $fs2ostdev) --mgsnode=$mgsnid \
+               --failnode=$failnid --fsname=$fsname \
+               --reformat $fs2ostdev $fs2ostvdev ||
+                       error "add fs2ost failed"
+       start fs2ost $fs2ostdev $OST_MOUNT_OPTS || error "start fs2ost failed"
+
+       mkdir -p $MOUNT2
+       mount -t lustre $mgsnid:/$fsname $MOUNT2 || error "mount $MOUNT2 failed"
+       DIR=$MOUNT2 MOUNT=$MOUNT2 check_mount || error "check $MOUNT2 failed"
+       cleanup_24a
+}
+run_test 77 "comma-separated MGS NIDs and failover node NIDs"
+
 if ! combined_mgs_mds ; then
        stop mgs
 fi