Whamcloud - gitweb
LU-1031: add grouplock test to sanity.sh
[fs/lustre-release.git] / lustre / tests / conf-sanity.sh
index be90e8a..b387f3b 100644 (file)
@@ -1,6 +1,4 @@
 #!/bin/bash
-# -*- mode: Bash; tab-width: 4; indent-tabs-mode: t; -*-
-# vim:autoindent:shiftwidth=4:tabstop=4:
 
 # FIXME - there is no reason to use all of these different
 #   return codes, espcially when most of them are mapped to something
@@ -29,6 +27,7 @@ PTLDEBUG=${PTLDEBUG:--1}
 SAVE_PWD=$PWD
 LUSTRE=${LUSTRE:-`dirname $0`/..}
 RLUSTRE=${RLUSTRE:-$LUSTRE}
+export MULTIOP=${MULTIOP:-multiop}
 
 . $LUSTRE/tests/test-framework.sh
 init_test_env $@
@@ -54,8 +53,12 @@ for facet in MGS MDS OST; do
     opts=${facet}_MKFS_OPTS
     if [[ ${!opts} != *lazy_itable_init* ]]; then
         eval SAVED_${facet}_MKFS_OPTS=\"${!opts}\"
-        eval ${facet}_MKFS_OPTS=\"${!opts} \
---mkfsoptions='\\\"-E lazy_itable_init\\\"'\"
+        if [[ ${!opts} != *mkfsoptions* ]]; then
+            eval ${facet}_MKFS_OPTS=\"${!opts} --mkfsoptions='\\\"-E lazy_itable_init\\\"'\"
+        else
+            val=${!opts//--mkfsoptions=\\\"/--mkfsoptions=\\\"-E lazy_itable_init }
+            eval ${facet}_MKFS_OPTS='${val}'
+        fi
     fi
 done
 
@@ -957,7 +960,7 @@ set_and_check() {
            FINAL=$(($ORIG + 5))
        fi
        echo "Setting $PARAM from $ORIG to $FINAL"
-       do_facet $SINGLEMDS "$LCTL conf_param $PARAM='$FINAL'" || error conf_param failed
+       do_facet mgs "$LCTL conf_param $PARAM='$FINAL'" || error conf_param failed
 
        wait_update $(facet_host $myfacet) "$TEST" "$FINAL" || error check failed!
 }
@@ -1206,7 +1209,7 @@ test_32a() {
                { skip_env "Cannot untar $DISK1_8" && return 0; }
 
        load_modules
-       $LCTL set_param debug=$PTLDEBUG
+       $LCTL set_param debug="$PTLDEBUG"
 
        $TUNEFS $tmpdir/mds || error "tunefs failed"
 
@@ -1273,11 +1276,13 @@ test_32b() {
                { skip_env "Cannot untar $DISK1_8" && return ; }
 
        load_modules
-       $LCTL set_param debug="config"
+       $LCTL set_param debug="+config"
        local NEWNAME=lustre
 
        # writeconf will cause servers to register with their current nids
-       $TUNEFS --writeconf --fsname=$NEWNAME $tmpdir/mds || error "tunefs failed"
+       $TUNEFS --writeconf --erase-params \
+        --param mdt.identity_upcall=$L_GETIDENTITY \
+        --fsname=$NEWNAME $tmpdir/mds || error "tunefs failed"
        combined_mgs_mds || stop mgs
 
        start32 mds1 $tmpdir/mds "-o loop" && \
@@ -1287,7 +1292,8 @@ test_32b() {
        echo MDS uuid $UUID
        [ "$UUID" == "${NEWNAME}-MDT0000_UUID" ] || error "UUID is wrong: $UUID"
 
-       $TUNEFS --mgsnode=$HOSTNAME --writeconf --fsname=$NEWNAME $tmpdir/ost1 ||\
+       $TUNEFS  --writeconf --erase-params \
+        --mgsnode=$HOSTNAME --fsname=$NEWNAME $tmpdir/ost1 ||\
            error "tunefs failed"
        start32 ost1 $tmpdir/ost1 "-o loop" || return 5
        UUID=$($LCTL get_param -n obdfilter.${NEWNAME}-OST0000.uuid)
@@ -1442,7 +1448,7 @@ 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 $SINGLEMDS $LCTL conf_param ${device}.failover.node=$FAKENID || return 4
+       do_facet mgs $LCTL conf_param ${device}.failover.node=$FAKENID || return 4
 
        log "Wait for RECONNECT_INTERVAL seconds (10s)"
        sleep 10
@@ -1496,7 +1502,7 @@ test_35b() { # bug 18674
        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 $SINGLEMDS "$LCTL conf_param ${device}.failover.node=$FAKENID" || \
+       do_facet mgs "$LCTL conf_param ${device}.failover.node=$FAKENID" || \
                return 1
 
        local at_max_saved=0
@@ -1983,13 +1989,13 @@ test_46a() {
        # wait until osts in sync
        for (( i=2; i<=$OSTCOUNT; i++ )); do
            wait_osc_import_state mds ost$i FULL
+           wait_osc_import_state client ost$i FULL
        done
 
-
        #second client see all ost's
 
        mount_client $MOUNT2 || return 8
-       $LFS setstripe $MOUNT2 -c -1 || return 9
+       $LFS setstripe -c -1 $MOUNT2 || return 9
        $LFS getstripe $MOUNT2 || return 10
 
        echo "ok" > $MOUNT2/widestripe
@@ -2057,9 +2063,9 @@ cleanup_48() {
 test_48() { # bug 17636
        reformat
        setup_noconfig
-        check_mount || return 2
+       check_mount || return 2
 
-       $LFS setstripe $MOUNT -c -1 || return 9
+       $LFS setstripe -c -1 $MOUNT || return 9
        $LFS getstripe $MOUNT || return 10
 
        echo "ok" > $MOUNT/widestripe
@@ -2418,7 +2424,7 @@ test_52() {
        [ $? -eq 0 ] || { error "Unable to mount client"; return 3; }
 
        local nrfiles=8
-       local ost1mnt=${MOUNT%/*}/ost1
+       local ost1mnt=$(facet_mntpt ost1)
        local ost1node=$(facet_active_host ost1)
        local ost1tmp=$TMP/conf52
 
@@ -2432,7 +2438,7 @@ test_52() {
        [ $? -eq 0 ] || { error "Unable to create temporary file"; return 6; }
        sleep 1
 
-       $LFS setstripe $DIR/$tdir -c -1 -s 1M
+       $LFS setstripe -c -1 -S 1M $DIR/$tdir
        [ $? -eq 0 ] || { error "lfs setstripe failed"; return 7; }
 
        for (( i=0; i < nrfiles; i++ )); do
@@ -2454,6 +2460,8 @@ test_52() {
        [ $? -eq 0 ] || { error "Unable to stop ost1"; return 11; }
 
        echo mount ost1 as ldiskfs
+       do_node $ost1node mkdir -p $ost1mnt
+       [ $? -eq 0 ] || { error "Unable to create $ost1mnt"; return 23; }
        do_node $ost1node mount -t $FSTYPE $ost1_dev $ost1mnt $OST_MOUNT_OPTS
        [ $? -eq 0 ] || { error "Unable to mount ost1 as ldiskfs"; return 12; }
 
@@ -2476,7 +2484,7 @@ test_52() {
        diff_files_xattrs $ost1node $ost1tmp/objects $ost1tmp/object_xattrs $objects
        [ $? -eq 0 ] || { error "Unable to diff objects"; return 16; }
 
-       do_node $ost1node "umount $ost1_dev"
+       do_node $ost1node "umount $ost1mnt"
        [ $? -eq 0 ] || { error "Unable to umount ost1 as ldiskfs"; return 17; }
 
        start_ost
@@ -2627,7 +2635,7 @@ test_55() {
                setup_noconfig
                stopall
 
-               setup
+               setup_noconfig
                sync
                echo checking size of lov_objid for ost index $i
                LOV_OBJID_SIZE=$(do_facet mds1 "$DEBUGFS -R 'stat lov_objid' $mdsdev 2>/dev/null" | grep ^User | awk '{print $6}')
@@ -2649,7 +2657,7 @@ test_56() {
        add ost1 $OST_MKFS_OPTS --index=1000 --reformat $(ostdevname 1)
        add ost2 $OST_MKFS_OPTS --index=10000 --reformat $(ostdevname 2)
 
-       start_mds
+       start_mgsmds
        start_ost
        start_ost2 || error "Unable to start second ost"
        mount_client $MOUNT || error "Unable to mount client"
@@ -2686,8 +2694,8 @@ count_osts() {
 }
 
 test_58() { # bug 22658
-        [ "$FSTYPE" != "ldiskfs" ] && skip "not supported for $FSTYPE" && return
-       setup
+       [ "$FSTYPE" != "ldiskfs" ] && skip "not supported for $FSTYPE" && return
+       setup_noconfig
        mkdir -p $DIR/$tdir
        createmany -o $DIR/$tdir/$tfile-%d 100
        # make sure that OSTs do not cancel llog cookies before we unmount the MDS
@@ -2756,6 +2764,84 @@ test_60() { # LU-471
 }
 run_test 60 "check mkfs.lustre --mkfsoptions -E -O options setting"
 
+test_61() { # LU-80
+    local reformat=false
+
+    [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.1.53) ] ||
+        { skip "Need MDS version at least 2.1.53"; return 0; }
+
+    if ! large_xattr_enabled; then
+        reformat=true
+        local mds_dev=$(mdsdevname ${SINGLEMDS//mds/})
+        add $SINGLEMDS $MDS_MKFS_OPTS --mkfsoptions='\"-O large_xattr\"' \
+            --reformat $mds_dev || error "reformatting $mds_dev failed"
+    fi
+
+    setup_noconfig || error "setting up the filesystem failed"
+    client_up || error "starting client failed"
+
+    local file=$DIR/$tfile
+    touch $file
+
+    local large_value="$(generate_string $(max_xattr_size))"
+    local small_value="bar"
+
+    local name="trusted.big"
+    log "save large xattr $name on $file"
+    setfattr -n $name -v $large_value $file ||
+        error "saving $name on $file failed"
+
+    local new_value=$(get_xattr_value $name $file)
+    [[ "$new_value" != "$large_value" ]] &&
+        error "$name different after saving"
+
+    log "shrink value of $name on $file"
+    setfattr -n $name -v $small_value $file ||
+        error "shrinking value of $name on $file failed"
+
+    new_value=$(get_xattr_value $name $file)
+    [[ "$new_value" != "$small_value" ]] &&
+        error "$name different after shrinking"
+
+    log "grow value of $name on $file"
+    setfattr -n $name -v $large_value $file ||
+        error "growing value of $name on $file failed"
+
+    new_value=$(get_xattr_value $name $file)
+    [[ "$new_value" != "$large_value" ]] &&
+        error "$name different after growing"
+
+    log "check value of $name on $file after remounting MDS"
+    fail $SINGLEMDS
+    new_value=$(get_xattr_value $name $file)
+    [[ "$new_value" != "$large_value" ]] &&
+        error "$name different after remounting MDS"
+
+    log "remove large xattr $name from $file"
+    setfattr -x $name $file || error "removing $name from $file failed"
+
+    rm -f $file
+    stopall
+    $reformat && reformat
+}
+run_test 61 "large xattr"
+
+test_62() {
+    # MRP-118
+    local mdsdev=$(mdsdevname 1)
+    local ostdev=$(ostdevname 1)
+
+    echo "disable journal for mds"
+    do_facet mds tune2fs -O ^has_journal $mdsdev || error "tune2fs failed"
+    start_mds && error "MDT start should fail"
+    echo "disable journal for ost"
+    do_facet ost1 tune2fs -O ^has_journal $ostdev || error "tune2fs failed"
+    start_ost && error "OST start should fail"
+    cleanup || return $?
+    reformat_and_config
+}
+run_test 62 "start with disabled journal"
+
 if ! combined_mgs_mds ; then
        stop mgs
 fi