. $LUSTRE/tests/test-framework.sh
init_test_env $@
. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
-get_lustre_env
# use small MDS + OST size to speed formatting time
# do not use too small MDSSIZE/OSTSIZE, which affect the default journal size
OSTDEV1_2=$fs2ost_DEV
OSTDEV2_2=$fs3ost_DEV
+# bug number for skipped test: LU-11915
+ALWAYS_EXCEPT="$ALWAYS_EXCEPT 110"
+
if ! combined_mgs_mds; then
- # bug number for skipped test: LU-9860 LU-9860 LU-9860
- ALWAYS_EXCEPT="$ALWAYS_EXCEPT 43b 53b 54b"
- # bug number for skipped test: LU-9875 LU-9879 LU-9879 LU-9879 LU-9879
- ALWAYS_EXCEPT="$ALWAYS_EXCEPT 70e 80 84 87 100"
- # bug number for skipped test: LU-8110 LU-9879 LU-9879 LU-9879
- ALWAYS_EXCEPT="$ALWAYS_EXCEPT 102 104 105 107"
+ # bug number for skipped test: LU-11991 LU-11990
+ ALWAYS_EXCEPT="$ALWAYS_EXCEPT 32a 32b 32c 32d 32e 66"
+ # bug number for skipped test: LU-9897 LU-12032
+ ALWAYS_EXCEPT="$ALWAYS_EXCEPT 84 123F"
fi
# pass "-E lazy_itable_init" to mke2fs to speed up the formatting time
LDISKFS_MKFS_OPTS=$(csa_add "$LDISKFS_MKFS_OPTS" -E lazy_itable_init)
fi
-[ $(facet_fstype $SINGLEMDS) = "zfs" ] &&
-# bug number for skipped test:
- ALWAYS_EXCEPT="$ALWAYS_EXCEPT"
-# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
-
-[ $MDSCOUNT -ge 2 ] &&
-# bug number for skipped test: LU-11915
- ALWAYS_EXCEPT+=" 110"
-# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
-
init_logging
#
run_test 5e "delayed connect, don't crash (bug 10268)"
test_5f() {
- if combined_mgs_mds ; then
- skip "needs separate mgs and mds"
- return 0
- fi
+ combined_mgs_mds && skip "needs separate mgs and mds"
grep " $MOUNT " /etc/mtab &&
error false "unexpected entry in mtab before mount" && return 10
test_5g() {
modprobe lustre
[ $(lustre_version_code client) -lt $(version_code 2.9.53) ] &&
- { skip "automount of debugfs missing before 2.9.53" && return 0; }
+ skip "automount of debugfs missing before 2.9.53"
umount /sys/kernel/debug
$LCTL get_param -n devices | egrep -v "error" && \
error "lctl can't access debugfs data"
}
run_test 5g "handle missing debugfs"
+test_5h() {
+ setup
+
+ stop mds1
+ #define OBD_FAIL_MDS_FS_SETUP 0x135
+ do_facet mds1 "$LCTL set_param fail_loc=0x80000135"
+ start_mdt 1 && error "start mdt should fail"
+ start_mdt 1 || error "start mdt failed"
+ client_up || error "client_up failed"
+ cleanup
+}
+run_test 5h "start mdt failure at mdt_fs_setup()"
+
+test_5i() {
+ setup
+
+ stop mds1
+ #define OBD_FAIL_QUOTA_INIT 0xA05
+ do_facet mds1 "$LCTL set_param fail_loc=0x80000A05"
+ start_mdt 1 && error "start mdt should fail"
+ start_mdt 1 || error "start mdt failed"
+ client_up || error "client_up failed"
+ cleanup
+}
+run_test 5i "start mdt failure at mdt_quota_init()"
+
test_6() {
setup
manual_umount_client
test_17() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
setup
test_18() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
local MDSDEV=$(mdsdevname ${SINGLEMDS//mds/})
log "use file $MDSDEV with MIN=$MIN"
fi
- [ -z "$OK" ] && skip_env "$MDSDEV too small for ${MIN}kB MDS" && return
+ [ -z "$OK" ] && skip_env "$MDSDEV too small for ${MIN}kB MDS"
echo "mount mds with large journal..."
run_test 21c "start mds between two osts, stop mds last"
test_21d() {
- if combined_mgs_mds ; then
- skip "need separate mgs device" && return 0
- fi
- stopall
+ combined_mgs_mds && skip "need separate mgs device"
- reformat
+ stopall
+ reformat
start_mgs || error "unable to start MGS"
start_ost || error "unable to start OST1"
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
+ skip_env "mixed loopback and real device not working"
fi
local fs2mdsdev=$(mdsdevname 1_2)
if [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" ]; then
is_blkdev $SINGLEMDS $MDSDEV &&
- skip_env "mixed loopback and real device not working" && return
+ skip_env "mixed loopback and real device not working"
fi
[ -n "$ost1_HOST" ] && fs2ost_HOST=$ost1_HOST
test_24b() {
local MDSDEV=$(mdsdevname ${SINGLEMDS//mds/})
+ combined_mgs_mds ||
+ skip "needs combined MGT and MDT device"
if [ -z "$fs2mds_DEV" ]; then
local dev=${SINGLEMDS}_dev
local MDSDEV=${!dev}
is_blkdev $SINGLEMDS $MDSDEV &&
- skip_env "mixed loopback and real device not working" && return
+ skip_env "mixed loopback and real device not working"
fi
local fs2mdsdev=$(mdsdevname 1_2)
add fs2mds $(mkfs_opts mds1 ${fs2mdsdev} ) --mgs --fsname=${FSNAME}2 \
--reformat $fs2mdsdev $fs2mdsvdev || exit 10
setup
- start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS &&
+ start fs2mds $fs2mdsdev $MDS_MOUNT_OPTS && {
+ cleanup
error "start MDS should fail"
+ }
stop fs2mds -f
cleanup || error "cleanup failed with rc $?"
}
run_test 24b "Multiple MGSs on a single node (should return err)"
test_25() {
- setup
+ setup_noconfig
check_mount || error "check_mount failed"
local MODULES=$($LCTL modules | awk '{ print $2 }')
rmmod $MODULES 2>/dev/null || true
run_test 26 "MDT startup failure cleans LOV (should return errs)"
test_27a() {
+ cleanup
start_ost || error "Unable to start OST1"
start_mds || error "Unable to start MDS"
echo "Requeue thread should have started: "
test_27b() {
# FIXME. ~grev
- setup
+ setup_noconfig
local device=$(do_facet $SINGLEMDS "$LCTL get_param -n devices" |
awk '($3 ~ "mdt" && $4 ~ "MDT0000") { print $4 }')
run_test 27b "Reacquire MGS lock after failover"
test_28A() { # was test_28
- setup
- TEST="llite.$FSNAME-*.max_read_ahead_whole_mb"
- PARAM="$FSNAME.llite.max_read_ahead_whole_mb"
- ORIG=$($LCTL get_param -n $TEST)
- FINAL=$(($ORIG + 1))
- set_persistent_param_and_check client "$TEST" "$PARAM" $FINAL
- FINAL=$(($FINAL + 1))
- set_persistent_param_and_check client "$TEST" "$PARAM" $FINAL
+ setup_noconfig
+
+ local TEST="llite.$FSNAME-*.max_read_ahead_whole_mb"
+ local PARAM="$FSNAME.llite.max_read_ahead_whole_mb"
+ local orig=$($LCTL get_param -n $TEST)
+ local max=$($LCTL get_param -n \
+ llite.$FSNAME-*.max_read_ahead_per_file_mb)
+
+ orig=${orig%%.[0-9]*}
+ max=${max%%.[0-9]*}
+ echo "ORIG:$orig MAX:$max"
+ [[ $max -le $orig ]] && orig=$((max - 3))
+ echo "ORIG:$orig MAX:$max"
+
+ local final=$((orig + 1))
+
+ set_persistent_param_and_check client "$TEST" "$PARAM" $final
+ final=$((final + 1))
+ set_persistent_param_and_check client "$TEST" "$PARAM" $final
umount_client $MOUNT || error "umount_client $MOUNT failed"
mount_client $MOUNT || error "mount_client $MOUNT failed"
- RESULT=$($LCTL get_param -n $TEST)
- if [ $RESULT -ne $FINAL ]; then
- error "New config not seen: wanted $FINAL got $RESULT"
+
+ local result=$($LCTL get_param -n $TEST)
+
+ if [ $result -ne $final ]; then
+ error "New config not seen: wanted $final got $result"
else
- echo "New config success: got $RESULT"
+ echo "New config success: got $result"
fi
- set_persistent_param_and_check client "$TEST" "$PARAM" $ORIG
+ set_persistent_param_and_check client "$TEST" "$PARAM" $orig
cleanup || error "cleanup failed with rc $?"
}
run_test 28A "permanent parameter setting"
test_28a() { # LU-4221
[[ $(lustre_version_code ost1) -ge $(version_code 2.5.52) ]] ||
- { skip "Need OST version at least 2.5.52" && return 0; }
+ skip "Need OST version at least 2.5.52"
[ "$(facet_fstype ost1)" = "zfs" ] &&
- skip "LU-4221: no such proc params for ZFS OSTs" && return
+ skip "LU-4221: no such proc params for ZFS OSTs"
local name
local param
local new
local device="$FSNAME-OST0000"
- setup
+ setup_noconfig
# In this test we will set three kinds of proc parameters with
# lctl set_param -P or lctl conf_param:
run_test 28a "set symlink parameters permanently with lctl"
test_29() {
- [ "$OSTCOUNT" -lt "2" ] && skip_env "needs >= 2 OSTs" && return
- setup > /dev/null 2>&1
+ [ "$OSTCOUNT" -lt "2" ] && skip_env "needs >= 2 OSTs"
+ setup_noconfig > /dev/null 2>&1
start_ost2 || error "Unable to start OST2"
sleep 10
# on the MDS servers which is tested with wait_osp_* below.
# For ost_server_uuid that only exist on client so filtering
# is safe.
- local PROC_ACT="osc.$FSNAME-OST0001-osc-*.active"
- local PROC_UUID="osc.$FSNAME-OST0001-osc-[!M]*.ost_server_uuid"
+ local PROC_ACT="osc.$FSNAME-OST0001-osc-[^M]*.active"
+ local PROC_UUID="osc.$FSNAME-OST0001-osc-[^M]*.ost_server_uuid"
- ACTV=$($LCTL get_param -n $PROC_ACT)
+ ACTV=$($LCTL get_param -n $PROC_ACT)
DEAC=$((1 - $ACTV))
set_persistent_param_and_check client $PROC_ACT $PARAM $DEAC
# also check ost_server_uuid status
run_test 29 "permanently remove an OST"
test_30a() {
- setup
+ setup_noconfig
echo Big config llog
TEST="llite.$FSNAME-*.max_read_ahead_whole_mb"
mount_client $MOUNT || error "mount_client $MOUNT failed"
FINAL=$($LCTL get_param -n $TEST)
echo "deleted (default) value=$FINAL, orig=$ORIG"
+ ORIG=${ORIG%%.[0-9]*}
+ FINAL=${FINAL%%.[0-9]*}
# assumes this parameter started at the default value
[ "$FINAL" -eq "$ORIG" ] || fail "Deleted value=$FINAL, orig=$ORIG"
run_test 30a "Big config llog and permanent parameter deletion"
test_30b() {
- setup
+ setup_noconfig
local orignids=$($LCTL get_param -n \
osc.$FSNAME-OST0000-osc-[^M]*.import | grep failover_nids)
# variable "tarballs".
#
t32_check() {
+ [ "$CLIENTONLY" ] && skip "Client-only testing"
+
local node=$(facet_active_host $SINGLEMDS)
local r="do_node $node"
- if [ "$CLIENTONLY" ]; then
- skip "Client-only testing"
- exit 0
- fi
-
- if ! $r which $TUNEFS; then
- skip_env "tunefs.lustre required on $node"
- exit 0
- fi
+ ! $r which "$TUNEFS" && skip_env "tunefs.lustre required on $node"
local IMGTYPE=$(facet_fstype $SINGLEMDS)
tarballs=$($r find $RLUSTRE/tests -maxdepth 1 \
-name \'disk*-$IMGTYPE.tar.bz2\')
- if [ -z "$tarballs" ]; then
- skip "No applicable tarballs found"
- exit 0
- fi
+ [ -z "$tarballs" ] && skip "No applicable tarballs found"
}
t32_test_cleanup() {
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; }
+ skip "LU-2200: Cannot run over IB w/o lctl replace_nids "
+ "(Need MGS version at least 2.3.59)"
local osthost=$(facet_active_host ost1)
local ostnid=$(do_node $osthost $LCTL list_nids | head -1)
local tarball
local rc=0
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
t32_check
for tarball in $tarballs; do
# Do not support 1_8 and 2_1 direct upgrade to DNE2 anymore */
test_32e() {
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.56) ]] ||
- { skip "Need MDS version at least 2.10.56"; return 0; }
+ skip "Need MDS version at least 2.10.56"
local tarballs
local tarball
local dev=${SINGLEMDS}_dev
local MDSDEV=${!dev}
is_blkdev $SINGLEMDS $MDSDEV &&
- skip_env "mixed loopback and real device not working" &&
- return
+ skip_env "mixed loopback and real device not working"
fi
local fs2mdsdev=$(mdsdevname 1_2)
run_test 35a "Reconnect to the last active server first"
test_35b() { # bug 18674
- remote_mds || { skip "local MDS" && return 0; }
+ remote_mds || skip "local MDS"
setup
debugsave
run_test 35b "Continue reconnection retries, if the active server is busy"
test_36() { # 12743
- [ $OSTCOUNT -lt 2 ] && skip_env "needs >= 2 OSTs" && return
+ [ $OSTCOUNT -lt 2 ] && skip_env "needs >= 2 OSTs"
[ "$ost_HOST" = "`hostname`" -o "$ost1_HOST" = "`hostname`" ] ||
- { skip "remote OST" && return 0; }
+ skip "remote OST"
local rc=0
local FSNAME2=test1234
if [ -z "$fs2ost_DEV" -o -z "$fs2mds_DEV" -o -z "$fs3ost_DEV" ]; then
is_blkdev $SINGLEMDS $MDSDEV &&
- skip_env "mixed loopback and real device not working" && return
+ skip_env "mixed loopback and real device not working"
fi
local fs2mdsdev=$(mdsdevname 1_2)
local fs2ostvdev=$(ostvdevname 1_2)
local fs3ostvdev=$(ostvdevname 2_2)
+ load_modules
add fs2mds $(mkfs_opts mds1 ${fs2mdsdev}) --mgs --fsname=${FSNAME2} \
--reformat $fs2mdsdev $fs2mdsvdev || exit 10
# XXX after we support non 4K disk blocksize in ldiskfs, specify a
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
echo "MDS : $mdsdev"
if ! do_facet $SINGLEMDS test -b $mdsdev; then
opts=$(csa_add "$opts" -o loop)
fi
+
+ load_modules
mount_op=$(do_facet $SINGLEMDS mount -v -t lustre $opts \
$mdsdev_sym $mntpt 2>&1)
rc=${PIPESTATUS[0]}
if [ $(facet_fstype $SINGLEMDS) == ldiskfs ] &&
! do_facet $SINGLEMDS test -b $(mdsdevname 1); then
skip "Loop devices does not work with nosvc option"
- return
fi
- combined_mgs_mds ||
- { skip "needs combined MGT and MDT device" && return 0; }
+ combined_mgs_mds || skip "needs combined MGT and MDT device"
start_mdt 1 -o nosvc -n
if [ $MDSCOUNT -ge 2 ]; then
if [ $(facet_fstype $SINGLEMDS) == ldiskfs ] &&
! do_facet $SINGLEMDS test -b $(mdsdevname 1); then
skip "Loop devices does not work with nosvc option"
- return
fi
- ! combined_mgs_mds && skip "needs combined mgs device" && return 0
+ ! combined_mgs_mds && skip "needs combined mgs device"
stopall
reformat
$server_version -lt $(version_code 2.5.50) ]] ||
[[ $server_version -ge $(version_code 2.5.4) &&
$server_version -lt $(version_code 2.5.11) ]] ||
- { skip "Need MDS version 2.5.4+ or 2.5.26+ or 2.6.52+"; return; }
+ skip "Need MDS version 2.5.4+ or 2.5.26+ or 2.6.52+"
# ensure mds1 ost1 have been created even if running sub-test standalone
cleanup
test_43a() {
[[ $(lustre_version_code mgs) -ge $(version_code 2.5.58) ]] ||
- { skip "Need MDS version at least 2.5.58" && return 0; }
+ skip "Need MDS version at least 2.5.58"
[ $UID -ne 0 -o $RUNAS_ID -eq 0 ] && skip_env "run as root"
ID1=${ID1:-501}
USER1=$(getent passwd | grep :$ID1:$ID1: | cut -d: -f1)
- [ -z "$USER1" ] && skip_env "missing user with uid=$ID1 gid=$ID1" &&
- return
+ [ -z "$USER1" ] && skip_env "missing user with uid=$ID1 gid=$ID1"
setup
chmod ugo+x $DIR || error "chmod 0 failed"
test_43b() { # LU-5690
[[ $(lustre_version_code mgs) -ge $(version_code 2.7.62) ]] ||
- { skip "Need MGS version 2.7.62+"; return; }
+ skip "Need MGS version 2.7.62+"
if [[ -z "$fs2mds_DEV" ]]; then
is_blkdev $SINGLEMDS $(mdsdevname ${SINGLEMDS//mds/}) &&
- skip_env "mixed loopback and real device not working" && return
+ skip_env "mixed loopback and real device not working"
fi
local fs2mdsdev=$(mdsdevname 1_2)
then
count=28 # hard coded of RPC protocol
elif [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
- count=4000 # max_num 4091 max_ea_size = 32768
+ count=4000 # max_num 4091 max_ea_size = ~65536
elif ! large_xattr_enabled; then
count=450 # max_num 497 max_ea_size = 4012
else
- count=4500 # max_num 8187 max_ea_size = 1048492
+ count=4500 # max_num 8187 max_ea_size = 65452
# not create too much (>5000) to save test time
fi
run_test 50f "normal statfs one server in down"
test_50g() {
- [ "$OSTCOUNT" -lt "2" ] && skip_env "needs >=2 OSTs" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip_env "needs >=2 OSTs"
setup
start_ost2 || error "Unable to start OST2"
- wait_osc_import_state mds ost2 FULL
+ wait_osc_import_state mds ost2 FULL
wait_osc_import_ready client ost2
if [[ $PERM_CMD == *"set_param -P"* ]]; then
# LU-642
test_50h() {
# prepare MDT/OST, make OSC inactive for OST1
- [ "$OSTCOUNT" -lt "2" ] && skip_env "needs >=2 OSTs" && return
+ [ "$OSTCOUNT" -lt "2" ] && skip_env "needs >=2 OSTs"
[ $(facet_fstype ost1) == zfs ] && import_zpool ost1
do_facet ost1 "$TUNEFS --param osc.active=0 `ostdevname 1`" ||
test_50i() {
# prepare MDT/OST, make OSC inactive for OST1
- [ "$MDSCOUNT" -lt "2" ] && skip_env "needs >= 2 MDTs" && return
+ [ "$MDSCOUNT" -lt "2" ] && skip "needs >= 2 MDTs"
load_modules
[ $(facet_fstype mds2) == zfs ] && import_zpool mds2
test_52() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
start_mds || error "Unable to start MDS"
fi
[ $tmin -eq $tmax -a $tmin -eq $tstarted ] &&
- skip_env "module parameter forced $facet thread count" &&
- tmin=3 && tmax=$((3 * tmax))
+ skip_env "module parameter forced $facet thread count"
# Check that we can change min/max
do_facet $facet "$LCTL set_param \
test_54a() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
do_rpc_nodes $(facet_host ost1) run_llverdev $(ostdevname 1) -p ||
test_54b() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
setup
test_55() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
local mdsdev=$(mdsdevname 1)
stopall
done
- reformat
+ reformat_and_config
}
run_test 55 "check lov_objid size"
stopall
MDSJOURNALSIZE=$mds_journal_size_orig
- reformat
+ reformat_and_config
}
run_test 56a "check big OST indexes and out-of-index-order start"
stop mds2
stop mds3
stopall
- reformat
+ reformat_and_config
}
test_56b() {
- [ $MDSCOUNT -lt 3 ] && skip "needs >= 3 MDTs" && return
+ [ $MDSCOUNT -lt 3 ] && skip "needs >= 3 MDTs"
trap cleanup_56b EXIT RETURN ERR
stopall
error "tunefs failed"
start_mgsmds
start_ost && error "OST registration from failnode should fail"
- reformat
+ cleanup
}
run_test 57a "initial registration from failnode should fail (should return errs)"
error "tunefs failed"
start_mgsmds
start_ost || error "OST registration from servicenode should not fail"
- reformat
+ cleanup
}
run_test 57b "initial registration from servicenode should not fail"
# restart MDS with missing llog files
start_mds || error "unable to start MDS"
do_facet $SINGLEMDS "$LCTL set_param fail_loc=0"
- reformat
+ cleanup
}
run_test 58 "missing llog files must not prevent MDT from mounting"
run_test 59 "writeconf mount option"
test_60() { # LU-471
- local num
-
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
+ local num
+
for num in $(seq $MDSCOUNT); do
add mds${num} $(mkfs_opts mds${num} $(mdsdevname $num)) \
--mkfsoptions='\" -E stride=64 -O ^uninit_bg\"' \
echo $dump | grep uninit_bg > /dev/null && error "uninit_bg is set"
# we set stride extended options
echo $dump | grep stride > /dev/null || error "stride is not set"
- reformat
+ stop_mds
+ reformat_and_config
}
run_test 60 "check mkfs.lustre --mkfsoptions -E -O options setting"
test_61() { # LU-80
- local lxattr=false
+ local lxattr=$(large_xattr_enabled)
[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.1.53) ] ||
- { skip "Need MDS version at least 2.1.53"; return 0; }
+ skip "Need MDS version at least 2.1.53"
if [ $(facet_fstype $SINGLEMDS) == ldiskfs ] &&
! large_xattr_enabled; then
done
fi
- combined_mgs_mds || stop_mgs || error "stopping MGS service failed"
- setup_noconfig || error "setting up the filesystem failed"
+ setup || error "setting up the filesystem failed"
client_up || error "starting client failed"
local file=$DIR/$tfile
log "remove large xattr $name from $file"
setfattr -x $name $file || error "removing $name from $file failed"
- if $lxattr; then
+ if $lxattr && [ $(facet_fstype $SINGLEMDS) == ldiskfs ]; then
stopall || error "stopping for e2fsck run"
for num in $(seq $MDSCOUNT); do
run_e2fsck $(facet_active_host mds$num) \
# need to delete this file to avoid problems in other tests
rm -f $file
- stopall || error "stopping systems failed"
+ cleanup || error "stopping systems failed"
}
run_test 61 "large xattr"
test_62() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
+ [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.51) ]] ||
+ skip "Need MDS version at least 2.2.51"
# MRP-118
local mdsdev=$(mdsdevname 1)
local ostdev=$(ostdevname 1)
- [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.51) ]] ||
- { skip "Need MDS version at least 2.2.51"; return 0; }
-
echo "disable journal for mds"
do_facet mds1 $TUNE2FS -O ^has_journal $mdsdev || error "tune2fs failed"
start_mds && error "MDT start should fail"
test_63() {
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
do_rpc_nodes $(facet_active_host $SINGLEMDS) load_module ldiskfs
awk '/ldiskfs_inode_cache/ { print $5 / $6 }')
if [ -z "$inode_slab" ]; then
skip "ldiskfs module has not been loaded"
- return
fi
echo "$inode_slab ldiskfs inodes per page"
# If kmalloc-128 is also 1 per page - this is a debug kernel
# and so this is not an error.
local kmalloc128=$(do_facet $SINGLEMDS "cat /proc/slabinfo" |
- awk '/^(kmalloc|size)-128 / { print $5 / $6 }')
+ awk '/^(dma-kmalloc|size)-128 / { print $5 / $6 }')
# 32 128-byte chunks in 4k
[ "${kmalloc128%.*}" -lt "32" ] ||
error "ldiskfs inode too big, only $inode_slab objs/page, " \
test_65() { # LU-2237
# Currently, the test is only valid for ldiskfs backend
[ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
- skip "ldiskfs only test" && return
+ skip "ldiskfs only test"
local devname=$(mdsdevname ${SINGLEMDS//mds/})
local brpt=$(facet_mntpt brpt)
test_66() {
[[ $(lustre_version_code mgs) -ge $(version_code 2.3.59) ]] ||
- { skip "Need MGS version at least 2.3.59"; return 0; }
+ skip "Need MGS version at least 2.3.59"
setup
local OST1_NID=$(do_facet ost1 $LCTL list_nids | head -1)
check_mount || error "error after nid replace"
cleanup || error "cleanup failed"
- reformat
+ reformat_and_config
}
run_test 66 "replace nids"
local END
[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.4.53) ] ||
- { skip "Need MDS version at least 2.4.53"; return 0; }
+ skip "Need MDS version at least 2.4.53"
umount_client $MOUNT || error "umount client failed"
- if ! combined_mgs_mds; then
- start_mgs || error "start mgs failed"
- fi
-
- start_mdt 1 || error "MDT start failed"
- start_ost || error "Unable to start OST1"
+ start_mgsmds
+ start_ost
# START-END - the sequences we'll be reserving
START=$(do_facet $SINGLEMDS \
local server_version=$(lustre_version_code $SINGLEMDS)
[[ $server_version -lt $(version_code 2.4.2) ]] &&
- skip "Need MDS version at least 2.4.2" && return
+ skip "Need MDS version at least 2.4.2"
[[ $server_version -ge $(version_code 2.4.50) ]] &&
[[ $server_version -lt $(version_code 2.5.0) ]] &&
- skip "Need MDS version at least 2.5.0" && return
+ skip "Need MDS version at least 2.5.0"
setup
mkdir $DIR/$tdir || error "mkdir $DIR/$tdir failed"
run_test 69 "replace an OST with the same index"
test_70a() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
local MDTIDX=1
cleanup || error "cleanup failed with $?"
run_test 70a "start MDT0, then OST, then MDT1"
test_70b() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
local MDTIDX=1
start_ost || error "OST0 start fail"
run_test 70b "start OST, MDT1, MDT0"
test_70c() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
local MDTIDX=1
start_mds || error "MDS start fail"
run_test 70c "stop MDT0, mkdir fail, create remote dir fail"
test_70d() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
local MDTIDX=1
start_mds || error "MDS start fail"
run_test 70d "stop MDT1, mkdir succeed, create remote dir fail"
test_70e() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.7.62) ] ||
- { skip "Need MDS version at least 2.7.62"; return 0; }
+ skip "Need MDS version at least 2.7.62"
- cleanup || error "cleanup failed with $?"
+ reformat || error "reformat failed with $?"
+
+ load_modules
local mdsdev=$(mdsdevname 1)
local ostdev=$(ostdevname 1)
local opts_mds="$(mkfs_opts mds1 $mdsdev) --reformat $mdsdev $mdsvdev"
local opts_ost="$(mkfs_opts ost1 $ostdev) --reformat $ostdev $ostvdev"
+ if ! combined_mgs_mds ; then
+ start_mgs
+ fi
+
add mds1 $opts_mds || error "add mds1 failed"
start_mdt 1 || error "start mdt1 failed"
add ost1 $opts_ost || error "add ost1 failed"
run_test 70e "Sync-on-Cancel will be enabled by default on DNE"
test_71a() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
if combined_mgs_mds; then
- skip "needs separate MGS/MDT" && return
+ skip "needs separate MGS/MDT"
fi
local MDTIDX=1
run_test 71a "start MDT0 OST0, MDT1, OST1"
test_71b() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
if combined_mgs_mds; then
- skip "needs separate MGS/MDT" && return
+ skip "needs separate MGS/MDT"
fi
local MDTIDX=1
run_test 71b "start MDT1, OST0, MDT0, OST1"
test_71c() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
- if combined_mgs_mds; then
- skip "needs separate MGS/MDT" && return
- fi
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+ combined_mgs_mds && skip "needs separate MGS/MDT"
+
local MDTIDX=1
start_ost || error "OST0 start fail"
run_test 71c "start OST0, OST1, MDT1, MDT0"
test_71d() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
- if combined_mgs_mds; then
- skip "needs separate MGS/MDT" && return
- fi
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+ combined_mgs_mds && skip "needs separate MGS/MDT"
+
local MDTIDX=1
start_ost || error "OST0 start fail"
run_test 71d "start OST0, MDT1, MDT0, OST1"
test_71e() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
- if combined_mgs_mds; then
- skip "needs separate MGS/MDT" && return
- fi
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+ combined_mgs_mds && skip "needs separate MGS/MDT"
+
local MDTIDX=1
start_ost || error "OST0 start fail"
run_test 71e "start OST0, MDT1, OST1, MDT0"
test_72() { #LU-2634
+ [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
+ skip "ldiskfs only test"
+
local mdsdev=$(mdsdevname 1)
local ostdev=$(ostdevname 1)
local cmd="$E2FSCK -fnvd $mdsdev"
local fn=3
local add_options
- [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
- skip "ldiskfs only test" && return
+ cleanup
+ load_modules
if combined_mgs_mds; then
add_options='--reformat'
$LCTL get_param -n osc.*OST0000-osc-[^M]*.import | grep failover_nids |
grep 1.2.3.4@$NETTYPE || error "failover nids haven't changed"
umount_client $MOUNT || error "umount client failed"
- stopall
- reformat
+ stop_ost
+ stop_mds
}
run_test 73 "failnode to update from mountdata properly"
test_75() { # LU-2374
[[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.1) ]] &&
- skip "Need MDS version at least 2.4.1" && return
+ skip "Need MDS version at least 2.4.1"
local index=0
local opts_mds="$(mkfs_opts mds1 $(mdsdevname 1)) \
- --reformat $(mdsdevname 1) $(mdsvdevname 1)"
+ --replace --reformat $(mdsdevname 1) $(mdsvdevname 1)"
local opts_ost="$(mkfs_opts ost1 $(ostdevname 1)) \
- --reformat $(ostdevname 1) $(ostvdevname 1)"
+ --replace --reformat $(ostdevname 1) $(ostvdevname 1)"
#check with default parameters
add mds1 $opts_mds || error "add mds1 failed for default params"
add mds1 $opts_mds || error "add mds1 failed for new params"
add ost1 $opts_ost || error "add ost1 failed for new params"
- if ! combined_mgs_mds; then
- stop_mgs || error "stop mgs failed"
- fi
- reformat
+
+ reformat_and_config
return 0
}
run_test 75 "The order of --index should be irrelevant"
test_76a() {
[[ $(lustre_version_code mgs) -ge $(version_code 2.4.52) ]] ||
- { skip "Need MDS version at least 2.4.52" && return 0; }
+ skip "Need MDS version at least 2.4.52"
- if ! combined_mgs_mds; then
- start_mgs || error "start mgs failed"
- fi
setup
local MDMB_PARAM="osc.*.max_dirty_mb"
echo "Change MGS params"
test_76b() { # LU-4783
[[ $(lustre_version_code mgs) -ge $(version_code 2.5.57) ]] ||
- { skip "Need MGS version at least 2.5.57" && return 0; }
+ skip "Need MGS version at least 2.5.57"
stopall
setupall
do_facet mgs $LCTL get_param mgs.MGS.live.params ||
test_76c() {
[[ $(lustre_version_code mgs) -ge $(version_code 2.8.54) ]] ||
- { skip "Need MDS version at least 2.4.52" && return 0; }
+ skip "Need MDS version at least 2.4.52"
setupall
local MASK_PARAM="mdd.*.changelog_mask"
echo "Change changelog_mask"
test_77() { # LU-3445
local server_version=$(lustre_version_code $SINGLEMDS)
[[ $server_version -ge $(version_code 2.8.55) ]] ||
- { skip "Need MDS version 2.8.55+ "; return; }
+ skip "Need MDS version 2.8.55+ "
if [[ -z "$fs2ost_DEV" || -z "$fs2mds_DEV" ]]; then
is_blkdev $SINGLEMDS $(mdsdevname ${SINGLEMDS//mds/}) &&
- skip_env "mixed loopback and real device not working" && return
+ skip_env "mixed loopback and real device not working"
fi
local fs2mdsdev=$(mdsdevname 1_2)
test_78() {
[[ $(facet_fstype $SINGLEMDS) != ldiskfs ||
$(facet_fstype ost1) != ldiskfs ]] &&
- skip "ldiskfs only test" && return
+ skip "ldiskfs only test"
# reformat the Lustre filesystem with a smaller size
local saved_MDSCOUNT=$MDSCOUNT
# check whether the MDT or OST filesystem was shrunk or not
if ! $shrunk; then
combined_mgs_mds || stop_mgs || error "(9) stop mgs failed"
- reformat || error "(10) reformat Lustre filesystem failed"
+ reformat_and_config ||
+ error "(10) reformat Lustre filesystem failed"
return 0
fi
MDSCOUNT=$saved_MDSCOUNT
OSTCOUNT=$saved_OSTCOUNT
- reformat || error "(14) reformat Lustre filesystem failed"
+ reformat_and_config || error "(14) reformat Lustre filesystem failed"
}
run_test 78 "run resize2fs on MDT and OST filesystems"
test_79() { # LU-4227
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.5.59) ]] ||
- { skip "Need MDS version at least 2.5.59"; return 0; }
+ skip "Need MDS version at least 2.5.59"
local mdsdev1=$(mdsdevname 1)
local mdsvdev1=$(mdsvdevname 1)
if ( $i ~ "--mgsnode" ) { print $i; break } }')
[ -n $mgsnode_opt ] &&
opts_ost1=$(echo $opts_ost1 | sed -e "s/$mgsnode_opt//")
-
+ load_modules
# -MGS, format a mdt without --mgs option
add mds1 $opts_mds1 $mdsdev1 $mdsvdev1 &&
error "Must specify --mgs when formatting mdt combined with mgs"
add ost1 $opts_ost1 $ostdev1 $ostvdev2 &&
error "Must specify --mgsnode when formatting an ost"
- reformat
+ reformat_and_config
}
run_test 79 "format MDT/OST without mgs option (should return errors)"
start_ost2 || error "Failed to start OST2"
do_facet ost1 "$LCTL set_param fail_loc=0"
- stopall
+ stop_ost2
+ stop_ost
+ stop_mds
}
run_test 80 "mgc import reconnect race"
done
OSTCOUNT=$saved_ostcount
- formatall
+ reformat
+ if ! combined_mgs_mds ; then
+ start_mgs
+ fi
}
# The main purpose of this test is to ensure the OST_INDEX_LIST functions as
# assigned index and ensures we can mount such a formatted file system
test_81() { # LU-4665
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.54) ]] ||
- { skip "Need MDS version at least 2.6.54" && return; }
- [[ $OSTCOUNT -ge 3 ]] || { skip_env "needs >= 3 OSTs" && return; }
+ skip "Need MDS version at least 2.6.54"
+ [[ $OSTCOUNT -ge 3 ]] || skip_env "needs >= 3 OSTs"
stopall
# Check max_easize.
local max_easize=$($LCTL get_param -n llite.*.max_easize)
- [[ $max_easize -eq 128 ]] ||
- error "max_easize is $max_easize, should be 128 bytes"
+ if [ $MDS1_VERSION -lt $(version_code 2.12.51) ]
+ then
+ [[ $max_easize -eq 128 ]] ||
+ error "max_easize is $max_easize, should be 128 bytes"
+ else
+ # LU-11868
+ # 4012 is 4096 - ldiskfs ea overhead
+ [[ $max_easize -ge 4012 ]] ||
+ error "max_easize is $max_easize, should be at least 4012 bytes"
+
+ # 65452 is XATTR_SIZE_MAX - ldiskfs ea overhead
+ if large_xattr_enabled;
+ then
+ [[ $max_easize -ge 65452 ]] ||
+ error "max_easize is $max_easize, should be at least 65452 bytes"
+ fi
+ fi
restore_ostindex
}
# 5. Lastly ensure this functionality fails with directories.
test_82a() { # LU-4665
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.54) ]] ||
- { skip "Need MDS version at least 2.6.54" && return; }
- [[ $OSTCOUNT -ge 3 ]] || { skip_env "needs >= 3 OSTs" && return; }
+ skip "Need MDS version at least 2.6.54"
+ [[ $OSTCOUNT -ge 3 ]] || skip_env "needs >= 3 OSTs"
stopall
# supplied pool.
test_82b() { # LU-4665
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.54) ]] ||
- { skip "Need MDS version at least 2.6.54" && return; }
- [[ $OSTCOUNT -ge 4 ]] || { skip_env "needs >= 4 OSTs" && return; }
+ skip "Need MDS version at least 2.6.54"
+ [[ $OSTCOUNT -ge 4 ]] || skip_env "needs >= 4 OSTs"
stopall
test_83() {
[[ $(lustre_version_code ost1) -ge $(version_code 2.6.91) ]] ||
- { skip "Need OST version at least 2.6.91" && return 0; }
+ skip "Need OST version at least 2.6.91"
if [ $(facet_fstype ost1) != ldiskfs ]; then
skip "ldiskfs only test"
- return
fi
local dev
err=$(do_facet ost1 dmesg | grep "VFS: Busy inodes after unmount of")
echo "string err $err"
[ -z "$err" ] || error $err
- reformat
+ reformat_and_config
}
run_test 83 "ENOSPACE on OST doesn't cause message VFS: \
Busy inodes after unmount ..."
test_85() {
[[ $(lustre_version_code ost1) -ge $(version_code 2.7.55) ]] ||
- { skip "Need OST version at least 2.7.55" && return 0; }
+ skip "Need OST version at least 2.7.55"
##define OBD_FAIL_OSD_OST_EA_FID_SET 0x197
do_facet ost1 "lctl set_param fail_loc=0x197"
start_ost
test_86() {
local server_version=$(lustre_version_code $SINGLEMDS)
[ "$(facet_fstype ost1)" = "zfs" ] &&
- skip "LU-6442: no such mkfs params for ZFS OSTs" && return
+ skip "LU-6442: no such mkfs params for ZFS OSTs"
[[ $server_version -ge $(version_code 2.7.56) ]] ||
- { skip "Need server version newer than 2.7.55"; return 0; }
+ skip "Need server version newer than 2.7.55"
local OST_OPTS="$(mkfs_opts ost1 $(ostdevname 1)) \
--reformat $(ostdevname 1) $(ostvdevname 1)"
test_87() { #LU-6544
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.9.51) ]] ||
- { skip "Need MDS version at least 2.9.51" && return; }
+ skip "Need MDS version at least 2.9.51"
[[ $(facet_fstype $SINGLEMDS) != ldiskfs ]] &&
- { skip "ldiskfs only test" && return; }
+ skip "ldiskfs only test"
[[ $OSTCOUNT -gt 59 ]] &&
- { skip "Ignore wide striping situation" && return; }
+ skip "Ignore wide striping situation"
local mdsdev=$(mdsdevname 1)
local mdsvdev=$(mdsvdevname 1)
unload_modules
reformat
+ if ! combined_mgs_mds ; then
+ start_mgs
+ fi
+
add mds1 $(mkfs_opts mds1 ${mdsdev}) --stripe-count-hint=$stripe_cnt \
--reformat $mdsdev $mdsvdev || error "add mds1 failed"
start_mdt 1 > /dev/null || error "start mdt1 failed"
more than $left_size-byte space left in inode."
echo "Verified: at most $left_size-byte space left in inode."
- stopall
+ umount_ldiskfs $SINGLEMDS
+
+ for i in $(seq $OSTCOUNT); do
+ stop ost$i -f || error "stop ost$i failed"
+ done
}
run_test 87 "check if MDT inode can hold EAs with N stripes properly"
test_88() {
[ "$(facet_fstype mds1)" == "zfs" ] &&
- skip "LU-6662: no implementation for ZFS" && return
+ skip "LU-6662: no implementation for ZFS"
load_modules
test_89() { # LU-7131
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.9.54) ]] ||
- { skip "Need MDT version at least 2.9.54" && return 0; }
+ skip "Need MDT version at least 2.9.54"
local key=failover.node
local val1=192.0.2.254@tcp0 # Reserved IPs, see RFC 5735
[ $(echo $params | tr ' ' '\n') == "$key=$val1" ] ||
error "on-disk param not added correctly with --erase-params"
- reformat
+ reformat_and_config
}
run_test 89 "check tunefs --param and --erase-param{s} options"
}
test_90a() {
- reformat
- if ! combined_mgs_mds ; then
- start_mgs
- fi
setup
[[ $($LCTL get_param mdc.*.import |
grep "connect_flags:.*multi_mod_rpc") ]] ||
- { skip "Need MDC with 'multi_mod_rpcs' feature"; return 0; }
+ skip "Need MDC with 'multi_mod_rpcs' feature"
# check default value
$LFS mkdir -c1 $DIR/$tdir || error "mkdir $DIR/$tdir failed"
[[ $($LCTL get_param mdc.*.import |
grep "connect_flags:.*multi_mod_rpc") ]] ||
- { skip "Need MDC with 'multi_mod_rpcs' feature"; return 0; }
+ skip "Need MDC with 'multi_mod_rpcs' feature"
### test 1.
# update max_mod_rpcs_in_flight
tmp=$($LCTL get_param -n mdc.$FSNAME-MDT*-mdc-*.import |
grep -c "multi_mod_rpcs")
if [ "$tmp" -ne $MDSCOUNT ]; then
- echo "Client not able to send multiple modify RPCs in parallel"
cleanup
- return
+ skip "Client not able to send multiple modify RPCs in parallel"
fi
# update max_mod_rpcs_in_flight
[[ $($LCTL get_param mdc.*.import |
grep "connect_flags:.*multi_mod_rpc") ]] ||
- { skip "Need MDC with 'multi_mod_rpcs' feature"; return 0; }
+ skip "Need MDC with 'multi_mod_rpcs' feature"
# check client is able to send multiple modify RPCs in paralell
tmp=$($LCTL get_param -n mdc.$FSNAME-MDT*-mdc-*.import |
grep -c "multi_mod_rpcs")
if [ "$tmp" -ne $MDSCOUNT ]; then
- skip "Client not able to send multiple modify RPCs in parallel"
cleanup
- return
+ skip "Client not able to send multiple modify RPCs in parallel"
fi
# get max_rpcs_in_flight value
[[ $($LCTL get_param mdc.*.import |
grep "connect_flags:.*multi_mod_rpc") ]] ||
- { skip "Need MDC with 'multi_mod_rpcs' feature"; return 0; }
+ skip "Need MDC with 'multi_mod_rpcs' feature"
$LFS mkdir -c1 $DIR/$tdir || error "mkdir $DIR/$tdir failed"
idx=$(printf "%04x" $($LFS getdirstripe -i $DIR/$tdir))
tmp=$($LCTL get_param -N \
mdc.$FSNAME-MDT$idx-mdc-*.max_mod_rpcs_in_flight)
if [ -z "$tmp" ]; then
- skip "Client does not support multiple modify RPCs in flight"
cleanup
- return
+ skip "Client does not support multiple modify RPCs in flight"
fi
# get current value of max_mod_rcps_in_flight
local found
[[ $(lustre_version_code ost1) -ge $(version_code 2.7.63) ]] ||
- { skip "Need OST version at least 2.7.63" && return 0; }
+ skip "Need OST version at least 2.7.63"
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.7.63) ]] ||
- { skip "Need MDT version at least 2.7.63" && return 0; }
+ skip "Need MDT version at least 2.7.63"
start_mds || error "MDS start failed"
start_ost || error "unable to start OST"
run_test 92 "ldev returns MGS NID correctly in command substitution"
test_93() {
- [ $MDSCOUNT -lt 3 ] && skip "needs >= 3 MDTs" && return
+ [ $MDSCOUNT -lt 3 ] && skip "needs >= 3 MDTs"
reformat
#start mgs or mgs/mdt0
start_ost || error "OST0 start fail"
#define OBD_FAIL_MGS_WRITE_TARGET_DELAY 0x90e
- do_facet mgs "$LCTL set_param fail_val = 10 fail_loc=0x8000090e"
+ do_facet mgs "$LCTL set_param fail_val=10 fail_loc=0x8000090e"
for num in $(seq 2 $MDSCOUNT); do
start_mdt $num &
done
mount_client $MOUNT || error "mount client fails"
wait_osc_import_state mds ost FULL
- wait_osc_import_state client ost FULL
+ wait_osc_import_ready client ost
check_mount || error "check_mount failed"
cleanup || error "cleanup failed with $?"
test_99()
{
[[ $(facet_fstype ost1) != ldiskfs ]] &&
- { skip "ldiskfs only test" && return; }
+ skip "ldiskfs only test"
[[ $(lustre_version_code ost1) -ge $(version_code 2.8.57) ]] ||
- { skip "Need OST version at least 2.8.57" && return 0; }
+ skip "Need OST version at least 2.8.57"
local ost_opts="$(mkfs_opts ost1 $(ostdevname 1)) \
--reformat $(ostdevname 1) $(ostvdevname 1)"
do_facet ost1 $DEBUGFS -c -R stats `ostdevname 1` | grep "meta_bg" &&
- skip "meta_bg already set" && return
+ skip "meta_bg already set"
local opts=ost_opts
if [[ ${!opts} != *mkfsoptions* ]]; then
echo "params: $opts"
+ load_modules
add ost1 $opts || error "add ost1 failed with new params"
do_facet ost1 $DEBUGFS -c -R stats `ostdevname 1` | grep "meta_bg" ||
error "meta_bg is not set"
-
- reformat
}
run_test 99 "Adding meta_bg option"
test_100() {
reformat
- start_mds || error "MDS start failed"
+
+ start_mgsmds || error "MDS start failed"
start_ost || error "unable to start OST"
mount_client $MOUNT || error "client start failed"
check_mount || error "check_mount failed"
test_102() {
[[ $(lustre_version_code $SINGLEMDS) -gt $(version_code 2.9.53) ]] ||
skip "Need server version greater than 2.9.53"
+ [[ “$(mdsdevname 1)” != “$(mgsdevname)” ]] &&
+ [[ “$(facet_host mds1)” = “$(facet_host mgs)” ]] &&
+ skip "MGS must be on different node or combined"
+
cleanup || error "cleanup failed with $?"
local mds1dev=$(mdsdevname 1)
awk '{ print $2 }')
[[ $(version_code $lctl_ver) -lt $(version_code 2.9.55) ]] &&
- { skip "this test needs utils above 2.9.55" && return 0; }
+ skip "this test needs utils above 2.9.55"
# specify "acl" in mount options used by mkfs.lustre
if [ -z "$MDS_MOUNT_FS_OPTS" ]; then
#reformat/remount the MDT to apply the MDT_MOUNT_FS_OPT options
formatall
+ if ! combined_mgs_mds ; then
+ start_mgs
+ fi
+
if [ -z "$MDS_MOUNT_OPTS" ]; then
MDS_MOUNT_OPTS="-o noacl"
else
MDS_MOUNT_OPTS=$mds_mountopts
OST_MOUNT_OPTS=$ost_mountopts
MDS_MOUNT_FS_OPTS=$mds_mountfsopts
-
- formatall
- setupall
}
run_test 104 "Make sure user defined options are reflected in mount"
test_105() {
cleanup -f
reformat
- setup
+ setup_noconfig
mkdir -p $TMP/$tdir
mount --bind $DIR $TMP/$tdir || error "mount bind mnt pt failed"
rm -f $TMP/$tdir/$tfile
local repeat=5
reformat
- setupall
+ setup_noconfig
mkdir -p $DIR/$tdir || error "create $tdir failed"
lfs setstripe -c 1 -i 0 $DIR/$tdir
#define OBD_FAIL_CAT_RECORDS 0x1312
#shows that osp code is buggy
do_facet mds1 $LCTL set_param fail_loc=0 fail_val=0
- stopall
+ cleanup
}
run_test 106 "check osp llog processing when catalog is wrapped"
test_107() {
[[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.50) ]] ||
- { skip "Need MDS version > 2.10.50"; return; }
+ skip "Need MDS version > 2.10.50"
local cmd
start_mgsmds || error "start_mgsmds failed"
}
test_108a() {
- [ "$CLIENTONLY" ] && skip "Client-only testing" && return
-
- [ $(facet_fstype $SINGLEMDS) != "zfs" ] &&
- skip "zfs only test" && return
-
+ [ "$CLIENTONLY" ] && skip "Client-only testing"
+ [ $(facet_fstype $SINGLEMDS) != "zfs" ] && skip "zfs only test"
[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.58) ] &&
- skip "Need server version at least 2.10.58" && return
+ skip "Need server version at least 2.10.58"
stopall
load_modules
run_test 108a "migrate from ldiskfs to ZFS"
test_108b() {
- [ "$CLIENTONLY" ] && skip "Client-only testing" && return
-
- [ $(facet_fstype $SINGLEMDS) != "ldiskfs" ] &&
- skip "ldiskfs only test" && return
-
+ [ "$CLIENTONLY" ] && skip "Client-only testing"
+ [ $(facet_fstype $SINGLEMDS) != "ldiskfs" ] && skip "ldiskfs only test"
[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.58) ] &&
- skip "Need server version at least 2.10.58" && return
+ skip "Need server version at least 2.10.58"
stopall
load_modules
local mgsdev
if ! combined_mgs_mds ; then
- mgsdev=$MGSDEV
+ mgsdev=$(mgsdevname)
stop_mgs || error "stop_mgs failed"
start_mgs "-o nosvc" || error "start_mgs nosvc failed"
else
test_109a()
{
+ [ $MDS1_VERSION -lt $(version_code 2.10.59) ] &&
+ skip "Needs MDS version 2.10.59 or later."
[ "$(facet_fstype mgs)" == "zfs" ] &&
- skip "LU-8727: no implementation for ZFS" && return
+ skip "LU-8727: no implementation for ZFS"
+
stopall
reformat
setup_noconfig
client_up || error "client_up failed"
+ #pool commands requires a client on MGS for procfs interfaces
+ if ! combined_mgs_mds ; then
+ mount_mgs_client
+ stack_trap umount_mgs_client EXIT
+ fi
#
# set number of permanent parameters
#
test_109_set_params $FSNAME
+ combined_mgs_mds || umount_mgs_client
umount_client $MOUNT || error "umount_client failed"
stop_ost || error "stop_ost failed"
stop_mds || error "stop_mds failed"
error "failed to clear client config"
setup_noconfig
+ combined_mgs_mds || mount_mgs_client
#
# check that configurations are intact
#
destroy_test_pools || error "destroy test pools failed"
+ combined_mgs_mds || umount_mgs_client
cleanup
}
run_test 109a "test lctl clear_conf fsname"
test_109b()
{
+ [ $MDS1_VERSION -lt $(version_code 2.10.59) ] &&
+ skip "Needs MDS version 2.10.59 or later."
[ "$(facet_fstype mgs)" == "zfs" ] &&
- skip "LU-8727: no implementation for ZFS" && return
+ skip "LU-8727: no implementation for ZFS"
+
stopall
reformat
setup_noconfig
client_up || error "client_up failed"
+ #pool commands requires a client on MGS for procfs interfaces
+ if ! combined_mgs_mds ; then
+ mount_mgs_client
+ stack_trap umount_mgs_client EXIT
+ fi
#
# set number of permanent parameters
#
test_109_set_params $FSNAME
+ combined_mgs_mds || umount_mgs_client
umount_client $MOUNT || error "umount_client failed"
stop_ost || error "stop_ost failed"
stop_mds || error "stop_mds failed"
error "failed to clear client config"
setup_noconfig
-
+ combined_mgs_mds || mount_mgs_client
#
# check that configurations are intact
#
#
destroy_test_pools || error "destroy test pools failed"
+ combined_mgs_mds || umount_mgs_client
cleanup
}
run_test 109b "test lctl clear_conf one config"
skip "large_dir option is not supported on OSS"
stopall # stop all targets before modifying the target counts
- stack_trap "MDSCOUNT=$MDSCOUNT OSTCOUNT=$OSTCOUNT" EXIT
+ local old_mdscount=$MDSCOUNT
+ local old_ostcount=$OSTCOUNT
+ local replace=""
+ stack_trap "MDSCOUNT=$old_mdscount OSTCOUNT=$old_ostcount" EXIT
MDSCOUNT=1
OSTCOUNT=1
(( MDSSIZE < CONF_SANITY_110_LINKS / 3 * 4/3 * 4/3 )) &&
CONF_SANITY_110_LINKS=$((MDSSIZE * 3 * 3/4 * 3/4))
+ combined_mgs_mds || replace=" --replace "
local opts="$(mkfs_opts mds1 $(mdsdevname 1)) \
- --reformat $(mdsdevname 1) $(mdsvdevname 1)"
+ $replace --reformat $(mdsdevname 1) $(mdsvdevname 1)"
if [[ $opts != *mkfsoptions* ]]; then
opts+=" --mkfsoptions=\\\"-O large_dir -b 1024 -i 65536\\\""
else
--mkfsoptions=\\\"-O large_dir -b 1024 -i 65536 }"
fi
echo "MDT params: $opts"
+ load_modules
+ combined_mgs_mds || start_mgs
add mds1 $opts || error "add mds1 failed with new params"
start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS
opts="$(mkfs_opts ost1 $(ostdevname 1)) \
- --reformat $(ostdevname 1) $(ostvdevname 1)"
+ $replace --reformat $(ostdevname 1) $(ostvdevname 1)"
if [[ $opts != *mkfsoptions* ]]; then
opts+=" --mkfsoptions=\\\"-O large_dir\\\" "
echo "waiting for PIDs$pids to complete"
wait $pids || error "createmany failed after $group groups"
+ umount_client $MOUNT2 -f
cleanup
run_e2fsck $(facet_active_host mds1) $(mdsdevname 1) -n
+ MDSCOUNT=$old_mdscount
+ OSTCOUNT=$old_ostcount
}
run_test 110 "Adding large_dir with 3-level htree"
# cleanup before changing target counts
cleanup
+ local old_mdscount=$MDSCOUNT
+ local old_ostcount=$OSTCOUNT
+ local old_mdssize=$MDSSIZE
+ local replace=""
stack_trap "MDSSIZE=$MDSSIZE MDSCOUNT=$MDSCOUNT OSTCOUNT=$OSTCOUNT" EXIT
MDSCOUNT=1
OSTCOUNT=1
(( MDSSIZE < 2400000 )) && MDSSIZE=2400000 # need at least 2.4GB
local mdsdev=$(mdsdevname 1)
-
+ combined_mgs_mds || replace=" --replace "
local opts="$(mkfs_opts mds1 $(mdsdevname 1)) \
- --reformat $(mdsdevname 1) $(mdsvdevname 1)"
+ $replace --reformat $(mdsdevname 1) $(mdsvdevname 1)"
if [[ $opts != *mkfsoptions* ]]; then
opts+=" --mkfsoptions=\\\"-O large_dir -i 1048576 \\\" "
else
--mkfsoptions=\\\"-O large_dir -i 1048576 }"
fi
echo "MDT params: $opts"
+ load_modules
+ combined_mgs_mds || start_mgs
__touch_device mds 1
add mds1 $opts || error "add mds1 failed with new params"
start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS
opts="$(mkfs_opts ost1 $(ostdevname 1)) \
- --reformat $(ostdevname 1) $(ostvdevname 1)"
+ $replace --reformat $(ostdevname 1) $(ostvdevname 1)"
if [[ $opts != *mkfsoptions* ]]; then
opts+=" --mkfsoptions=\\\"-O large_dir \\\""
else
(( left > 1200 )) && needskip=1
done
+ umount_client $MOUNT2 -f
cleanup
(( $needskip )) && skip "ETA ${left}s after $num files / ${taken}s is too long"
run_e2fsck $(facet_active_host mds1) $(mdsdevname 1) -n
+ MDSCOUNT=$old_mdscount
+ OSTCOUNT=$old_ostcount
+ MDSSIZE=$old_mdssize
}
run_test 111 "Adding large_dir with over 2GB directory"
trap 0
stopall
rm -f $TMP/$tdir/lustre-mdt
- formatall
+ reformat_and_config
}
test_115() {
- IMAGESIZE=$((3072 << 30)) # 3072 GiB
-
if [ $(facet_fstype $SINGLEMDS) != ldiskfs ]; then
skip "Only applicable to ldiskfs-based MDTs"
- return
fi
+ IMAGESIZE=$((3072 << 30)) # 3072 GiB
+
stopall
# We need MDT size 3072GB, because it is smallest
# partition that can store 2B inodes
do_facet $SINGLEMDS "touch $mdsimgname"
trap cleanup_115 RETURN EXIT
do_facet $SINGLEMDS "$TRUNCATE $mdsimgname $IMAGESIZE" ||
- { skip "Backend FS doesn't support sparse files"; return 0; }
+ skip "Backend FS doesn't support sparse files"
local mdsdev=$(do_facet $SINGLEMDS "losetup -f")
do_facet $SINGLEMDS "losetup $mdsdev $mdsimgname"
--mkfsoptions='-O lazy_itable_init,ea_inode,^resize_inode,meta_bg \
-i 1024'"
add mds1 $mds_opts --mgs --reformat $mdsdev ||
- { skip_env "format large MDT failed"; return 0; }
+ skip_env "format large MDT failed"
add ost1 $(mkfs_opts ost1 $(ostdevname 1)) --index=$i \
--reformat $(ostdevname 1) $(ostvdevname 1)
run_test 115 "Access large xattr with inodes number over 2TB"
test_116() {
- [ $(facet_fstype $SINGLEMDS) != "ldiskfs" ] &&
- skip "ldiskfs only test" && return
-
+ [ $(facet_fstype $SINGLEMDS) != "ldiskfs" ] && skip "ldiskfs only test"
[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.59) ] &&
- skip "Need server version at least 2.10.59" && return
-
- do_facet $SINGLEMDS which mkfs.xfs || {
+ skip "Need server version at least 2.10.59"
+ do_facet $SINGLEMDS which mkfs.xfs ||
skip_env "No mkfs.xfs installed"
- return
- }
stopall
load_modules
do_facet $SINGLEMDS $TUNE2FS -l $tmpmnt/$mdtimg |
grep -qw 'features.*extent' || error "extent should be enabled"
+ reformat_and_config
}
run_test 116 "big size MDT support"
run_test 120 "cross-target rename should not create bad symlinks"
test_122() {
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
[[ $(lustre_version_code ost1) -ge $(version_code 2.11.53) ]] ||
- { skip "Need OST version at least 2.11.53" && return 0; }
-
+ skip "Need OST version at least 2.11.53"
reformat
LOAD_MODULES_REMOTE=true load_modules
#define OBD_FAIL_OFD_SET_OID 0x1e0
do_facet ost1 $LCTL set_param fail_loc=0x00001e0
- setupall
+ setup_noconfig
$LFS mkdir -i1 -c1 $DIR/$tdir
$LFS setstripe -i0 -c1 $DIR/$tdir
do_facet ost1 $LCTL set_param fail_loc=0
createmany -o $DIR/$tdir/file_ 1000 ||
error "Fail to create a new sequence"
- reformat
+ cleanup
}
run_test 122 "Check OST sequence update"
test_123aa() {
remote_mgs_nodsh && skip "remote MGS with nodsh"
- [ -d $MOUNT/.lustre ] || setupall
+ [ -d $MOUNT/.lustre ] || setup
# test old logid format until removal from llog_ioctl.c::str2logid()
if [ $MGS_VERSION -lt $(version_code 3.1.53) ]; then
[[ $MGS_VERSION -gt $(version_code 2.11.51) ]] ||
skip "Need server with working llog_print support"
- [ -d $MOUNT/.lustre ] || setupall
+ [ -d $MOUNT/.lustre ] || setup
local yaml
local orig_val
local start=10
local end=50
- [ -d $MOUNT/.lustre ] || setupall
+ [ -d $MOUNT/.lustre ] || setup
# - { index: 10, event: add_uuid, nid: 192.168.20.1@tcp(0x20000c0a81401,
# node: 192.168.20.1@tcp }
do_facet mgs "$LCTL help llog_print" 2>&1 | grep -q -- --start ||
skip "Need 'lctl llog_print --start' on MGS"
- [ -d $MOUNT/.lustre ] || setupall
+ [ -d $MOUNT/.lustre ] || setup
# append a new record, to avoid issues if last record was cancelled
local old=$($LCTL get_param -n osc.*-OST0000-*.max_dirty_mb | head -1)
}
run_test 123ad "llog_print shows all records"
+test_123ae() { # LU-11566
+ remote_mgs_nodsh && skip "remote MGS with nodsh"
+ [ -d $MOUNT/.lustre ] || setupall
+
+ local max=$($LCTL get_param -n osc.*-OST0000-*.max_dirty_mb | head -1)
+
+ if do_facet mgs "$LCTL help llog_cancel" 2>&1| grep -q -- --log_id; then
+ # save one set_param -P record in case none exist
+ do_facet mgs $LCTL set_param -P osc.*.max_dirty_mb=$max
+
+ local log=params
+ local orig=$(do_facet mgs $LCTL --device MGS llog_print $log |
+ tail -1 | awk '{ print $4 }' | tr -d , )
+ do_facet mgs $LCTL set_param -P osc.*.max_dirty_mb=$max
+ do_facet mgs $LCTL --device MGS llog_print $log | tail -1 |
+ grep "parameter: osc.*.max_dirty_mb" ||
+ error "new set_param -P wasn't stored in params log"
+
+ # - { index: 71, event: set_param, device: general,
+ # param: osc.*.max_dirty_mb, value: 256 }
+ local id=$(do_facet mgs $LCTL --device MGS llog_print $log |
+ tail -1 | awk '{ print $4 }' | tr -d , )
+
+ do_facet mgs $LCTL --device MGS llog_cancel $log --log_idx=$id
+ local new=$(do_facet mgs $LCTL --device MGS llog_print $log |
+ tail -1 | awk '{ print $4 }' | tr -d , )
+ (( new == orig )) ||
+ error "new llog_cancel now $new, not at $orig records"
+ fi
+
+ # test old positional parameters for a while still
+ if [ $(lustre_version_code mgs) -le $(version_code 3.1.53) ]; then
+ log=$FSNAME-client
+ orig=$(do_facet mgs $LCTL --device MGS llog_print $log |
+ tail -1 | awk '{ print $4 }' | tr -d , )
+ do_facet mgs $LCTL conf_param $FSNAME-OST0000.osc.max_dirty_mb=$max
+ do_facet mgs $LCTL --device MGS llog_print $log |
+ tail -1 | grep "parameter: osc.max_dirty_mb" ||
+ error "old conf_param wasn't stored in params log"
+
+ # - { index: 71, event: conf_param, device: testfs-OST0000-osc,
+ # param: osc.max_dirty_mb=256 }
+ id=$(do_facet mgs $LCTL --device MGS llog_print $log |
+ tail -1 | awk '{ print $4 }' | tr -d , )
+ do_facet mgs $LCTL --device MGS llog_cancel $log $id
+ new=$(do_facet mgs $LCTL --device MGS llog_print $log |
+ tail -1 | awk '{ print $4 }' | tr -d , )
+ (( new == orig )) ||
+ error "old llog_cancel now $new, not at $orig records"
+ fi
+}
+run_test 123ae "llog_cancel can cancel requested record"
+
test_123F() {
- setupall
+ remote_mgs_nodsh && skip "remote MGS with nodsh"
+
+ [ -d $MOUNT/.lustre ] || setup
local yaml_file="$TMP/$tfile.yaml"
do_facet mgs rm "$yaml_file"
local cfgfiles=$(do_facet mgs "lctl --device MGS llog_catlist" |
error "$set_val is not testname"
do_facet mgs rm "$yaml_file"
+ cleanup
}
run_test 123F "clear and reset all parameters using set_param -F"
test_124()
{
- [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
- [ -z $mds2failover_HOST ] && skip "needs MDT failover setup" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+ [ -z $mds2failover_HOST ] && skip "needs MDT failover setup"
setup
cleanup
}
run_test 124 "check failover after replace_nids"
+get_max_sectors_kb() {
+ local facet="$1"
+ local device="$2"
+ local dev_base=$(basename $(do_facet ${facet} "readlink -f ${device}"))
+ local max_sectors_path="/sys/block/${dev_base}/queue/max_sectors_kb"
+
+ do_facet ${facet} "[[ -e ${max_sectors_path} ]] &&
+ cat ${max_sectors_path}"
+}
+
+get_max_hw_sectors_kb() {
+ local facet="$1"
+ local device="$2"
+ local dev_base=$(basename $(do_facet ${facet} "readlink -f ${device}"))
+ local max_hw_path="/sys/block/${dev_base}/queue/max_hw_sectors_kb"
+
+ do_facet ${facet} "[[ -e ${max_hw_path} ]] && cat ${max_hw_path}"
+}
+
+set_max_sectors_kb() {
+ local facet="$1"
+ local device="$2"
+ local value="$3"
+ local dev_base=$(basename $(do_facet ${facet} "readlink -f ${device}"))
+ local max_sectors_path="/sys/block/${dev_base}/queue/max_sectors_kb"
+
+ do_facet ${facet} "[[ -e ${max_sectors_path} ]] &&
+ echo ${value} > ${max_sectors_path}"
+ rc=$?
+
+ [[ $rc -ne 0 ]] && echo "Failed to set ${max_sectors_path} to ${value}"
+
+ return $rc
+}
+
+# Return 0 if all slave devices have max_sectors_kb == max_hw_sectors_kb
+# Otherwise return > 0
+check_slaves_max_sectors_kb()
+{
+ local facet="$1"
+ local device="$2"
+ local dev_base=$(basename $(do_facet ${facet} "readlink -f ${device}"))
+ local slaves_dir=/sys/block/${dev_base}/slaves
+ local slave_devices=$(do_facet ${facet} "ls ${slaves_dir} 2>/dev/null")
+ [[ -z ${slave_devices} ]] && return 0
+
+ local slave max_sectors new_max_sectors max_hw_sectors path
+ local rc=0
+ for slave in ${slave_devices}; do
+ path="/dev/${slave}"
+ ! is_blkdev ${facet} ${path} && continue
+ max_sectors=$(get_max_sectors_kb ${facet} ${path})
+ max_hw_sectors=$(get_max_hw_sectors_kb ${facet} ${path})
+ new_max_sectors=${max_hw_sectors}
+ [[ ${new_max_sectors} -gt ${RQ_SIZE_LIMIT} ]] &&
+ new_max_sectors=${RQ_SIZE_LIMIT}
+
+ if [[ ${max_sectors} -ne ${new_max_sectors} ]]; then
+ echo "${path} ${max_sectors} ${new_max_sectors}"
+ ((rc++))
+ fi
+ check_slaves_max_sectors_kb ${facet} ${path}
+ ((rc + $?))
+ done
+
+ return $rc
+}
+
+test_125()
+{
+ local facet_list="mgs mds1 ost1"
+ combined_mgs_mds && facet_list="mgs ost1"
+
+ local facet
+ for facet in ${facet_list}; do
+ [[ $(facet_fstype ${facet}) != ldiskfs ]] &&
+ skip "ldiskfs only test" &&
+ return 0
+ ! is_blkdev ${facet} $(facet_device ${facet}) &&
+ skip "requires all real devices" &&
+ return 0
+ done
+
+ local rc=0
+ # We don't increase IO request size limit past 16MB. See comments in
+ # lustre/utils/libmount_utils_ldiskfs.c:tune_max_sectors_kb()
+ RQ_SIZE_LIMIT=$((16 * 1024))
+ local device old_max_sectors new_max_sectors max_hw_sectors
+ for facet in ${facet_list}; do
+ device=$(facet_device ${facet})
+ old_max_sectors=$(get_max_sectors_kb ${facet} ${device})
+ max_hw_sectors=$(get_max_hw_sectors_kb ${facet} ${device})
+
+ # The expected value after l_tunedisk is executed
+ new_max_sectors=$old_max_sectors
+ [[ ${new_max_sectors_kb} -gt ${RQ_SIZE_LIMIT} ]] &&
+ new_max_sectors_kb=${RQ_SIZE_LIMIT}
+
+ # Ensure the current value of max_sectors_kb does not equal
+ # max_hw_sectors_kb, so we can tell whether l_tunedisk did
+ # anything
+ set_max_sectors_kb ${facet} ${device} $((new_max_sectors - 1))
+
+ # Value before l_tunedisk
+ local pre_max_sectors=$(get_max_sectors_kb ${facet} ${device})
+ if [[ ${pre_max_sectors} -ne $((new_max_sectors - 1)) ]]; then
+ echo "unable to satsify test pre-condition:"
+ echo "${pre_max_sectors} != $((new_max_sectors - 1))"
+ ((rc++))
+ continue
+ fi
+
+ echo "Before: ${facet} ${device} ${pre_max_sectors} ${max_hw_sectors}"
+
+ do_facet ${facet} "libtool execute l_tunedisk ${device}"
+
+ # Value after l_tunedisk
+ local post_max_sectors=$(get_max_sectors_kb ${facet} ${device})
+
+ echo "After: ${facet} ${device} ${post_max_sectors} ${max_hw_sectors}"
+
+ if [[ ${facet} != ost1 ]]; then
+ if [[ ${post_max_sectors} -ne ${pre_max_sectors} ]]; then
+ echo "l_tunedisk modified max_sectors_kb of ${facet}"
+ ((rc++))
+ fi
+
+ set_max_sectors_kb ${facet} ${device} ${old_max_sectors}
+ else
+ if [[ ${post_max_sectors} -eq ${pre_max_sectors} ]]; then
+ echo "l_tunedisk failed to modify max_sectors_kb of ${facet}"
+ ((rc++))
+ fi
+
+ check_slaves_max_sectors_kb ${facet} ${device} ||
+ ((rc++))
+ fi
+ done
+
+ return $rc
+}
+run_test 125 "check l_tunedisk only tunes OSTs and their slave devices"
+
if ! combined_mgs_mds ; then
stop mgs
fi