ONLY=${ONLY:-"$*"}
-# bug number for skipped test:
-ALWAYS_EXCEPT="$CONF_SANITY_EXCEPT"
+# bug number for skipped test: LU-2828
+ALWAYS_EXCEPT="$CONF_SANITY_EXCEPT 59 64"
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
is_sles11() # LU-2181
LDISKFS_MKFS_OPTS=$(csa_add "$LDISKFS_MKFS_OPTS" -E lazy_itable_init)
fi
+[ $(facet_fstype $SINGLEMDS) = "zfs" ] &&
+# bug number for skipped test: LU-2778 LU-2059
+ ALWAYS_EXCEPT="$ALWAYS_EXCEPT 57b 50h"
+
init_logging
#
# Better reformat if it fails...
writeconf_all $MDSCOUNT 2 ||
{ echo "tunefs failed, reformatting instead" &&
- reformat_and_config && return 1; }
+ reformat_and_config && return 0; }
return 0
}
return
fi
- setup
- check_mount || return 41
- cleanup || return $?
+ setup
+ check_mount || return 41
+ cleanup || return $?
- echo "Remove mds config log"
- if ! combined_mgs_mds ; then
- stop mgs
- fi
+ echo "Remove mds config log"
+ if ! combined_mgs_mds ; then
+ stop mgs
+ fi
- do_facet mgs "$DEBUGFS -w -R 'unlink CONFIGS/$FSNAME-MDT0000' $MGSDEV || return \$?" || return $?
+ do_facet mgs "$DEBUGFS -w -R 'unlink CONFIGS/$FSNAME-MDT0000' \
+ $(mgsdevname) || return \$?" || return $?
- if ! combined_mgs_mds ; then
- start_mgs
- fi
+ if ! combined_mgs_mds ; then
+ start_mgs
+ fi
- start_ost
- start_mds && return 42
- reformat_and_config
+ start_ost
+ start_mds && return 42
+ reformat_and_config
}
run_test 17 "Verify failed mds_postsetup won't fail assertion (2936) (should return errs)"
}
run_test 31 "Connect to non-existent node (shouldn't crash)"
+
+T32_QID=60000
+T32_BLIMIT=20480 # Kbytes
+T32_ILIMIT=2
+
#
# This is not really a test but a tool to create new disk
# image tarballs for the upgrade tests.
mkdir $tmp/src
tar cf - -C $src . | tar xf - -C $tmp/src
+ dd if=/dev/zero of=$tmp/src/t32_qf_old bs=1M \
+ count=$(($T32_BLIMIT / 1024 / 2))
+ chown $T32_QID.$T32_QID $tmp/src/t32_qf_old
formatall
setupall
+
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.50) ] &&
+ $LFS quotacheck -ug /mnt/$FSNAME
+ $LFS setquota -u $T32_QID -b 0 -B $T32_BLIMIT -i 0 -I $T32_ILIMIT \
+ /mnt/$FSNAME
+
tar cf - -C $tmp/src . | tar xf - -C /mnt/$FSNAME
stopall
popd
$LCTL get_param -n version | head -n 1 |
sed -e 's/^lustre: *//' >$tmp/img/commit
+
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.50) ] &&
+ $LFS quotaon -ug /mnt/$FSNAME
+ $LFS quota -u $T32_QID -v /mnt/$FSNAME
+ $LFS quota -v -u $T32_QID /mnt/$FSNAME |
+ awk 'BEGIN { num='1' } { if ($1 == "'/mnt/$FSNAME'") \
+ { if (NF == 1) { getline } else { num++ } ; print $num;} }' \
+ | tr -d "*" > $tmp/img/bspace
+ $LFS quota -v -u $T32_QID /mnt/$FSNAME |
+ awk 'BEGIN { num='5' } { if ($1 == "'/mnt/$FSNAME'") \
+ { if (NF == 1) { getline } else { num++ } ; print $num;} }' \
+ | tr -d "*" > $tmp/img/ispace
+
stopall
pushd $tmp/src
return 1
}
+t32_verify_quota() {
+ local node=$1
+ local fsname=$2
+ local mnt=$3
+ local fstype=$(facet_fstype $SINGLEMDS)
+ local qval
+ local cmd
+
+ $LFS quota -u $T32_QID -v $mnt
+
+ qval=$($LFS quota -v -u $T32_QID $mnt |
+ awk 'BEGIN { num='1' } { if ($1 == "'$mnt'") \
+ { if (NF == 1) { getline } else { num++ } ; print $num;} }' \
+ | tr -d "*")
+ [ $qval -eq $img_bspace ] || {
+ echo "bspace, act:$qval, exp:$img_bspace"
+ return 1
+ }
+
+ qval=$($LFS quota -v -u $T32_QID $mnt |
+ awk 'BEGIN { num='5' } { if ($1 == "'$mnt'") \
+ { if (NF == 1) { getline } else { num++ } ; print $num;} }' \
+ | tr -d "*")
+ [ $qval -eq $img_ispace ] || {
+ echo "ispace, act:$qval, exp:$img_ispace"
+ return 1
+ }
+
+ qval=$($LFS quota -v -u $T32_QID $mnt |
+ awk 'BEGIN { num='3' } { if ($1 == "'$mnt'") \
+ { if (NF == 1) { getline } else { num++ } ; print $num;} }' \
+ | tr -d "*")
+ [ $qval -eq $T32_BLIMIT ] || {
+ echo "blimit, act:$qval, exp:$T32_BLIMIT"
+ return 1
+ }
+
+ qval=$($LFS quota -v -u $T32_QID $mnt |
+ awk 'BEGIN { num='7' } { if ($1 == "'$mnt'") \
+ { if (NF == 1) { getline } else { num++ } ; print $num;} }' \
+ | tr -d "*")
+ [ $qval -eq $T32_ILIMIT ] || {
+ echo "ilimit, act:$qval, exp:$T32_ILIMIT"
+ return 1
+ }
+
+ do_node $node $LCTL conf_param $fsname.quota.mdt=ug
+ cmd="$LCTL get_param -n osd-$fstype.$fsname-MDT0000"
+ cmd=$cmd.quota_slave.enabled
+ wait_update $node "$cmd" "ug" || {
+ echo "Enable mdt quota failed"
+ return 1
+ }
+
+ do_node $node $LCTL conf_param $fsname.quota.ost=ug
+ cmd="$LCTL get_param -n osd-$fstype.$fsname-OST0000"
+ cmd=$cmd.quota_slave.enabled
+ wait_update $node "$cmd" "ug" || {
+ echo "Enable ost quota failed"
+ return 1
+ }
+
+ chmod 0777 $mnt
+ runas -u $T32_QID -g $T32_QID dd if=/dev/zero of=$mnt/t32_qf_new \
+ bs=1M count=$(($T32_BLIMIT / 1024)) oflag=sync && {
+ echo "Write succeed, but expect -EDQUOT"
+ return 1
+ }
+ rm -f $mnt/t32_qf_new
+
+ runas -u $T32_QID -g $T32_QID createmany -m $mnt/t32_qf_ \
+ $T32_ILIMIT && {
+ echo "Create succeed, but expect -EDQUOT"
+ return 1
+ }
+ unlinkmany $mnt/t32_qf_ $T32_ILIMIT
+
+ return 0
+}
+
t32_test() {
local tarball=$1
local writeconf=$2
local img_commit
local img_kernel
local img_arch
+ local img_bspace
+ local img_ispace
local fsname=t32fs
local nid=$($r $LCTL list_nids | head -1)
local mopts
local nrpcs_orig
local nrpcs
local list
+ local fstype=$(facet_fstype $SINGLEMDS)
trap 'trap - RETURN; t32_test_cleanup' RETURN
img_commit=$($r cat $tmp/commit)
img_kernel=$($r cat $tmp/kernel)
img_arch=$($r cat $tmp/arch)
+ img_bspace=$($r cat $tmp/bspace)
+ img_ispace=$($r cat $tmp/ispace)
echo "Upgrading from $(basename $tarball), created with:"
echo " Commit: $img_commit"
echo " Kernel: $img_kernel"
}
if [ "$writeconf" ]; then
mopts=loop,writeconf
+ if [ $fstype == "ldiskfs" ]; then
+ $r $TUNEFS --quota $tmp/mdt || {
+ error_noexit "Enable mdt quota feature"
+ return 1
+ }
+ fi
else
mopts=loop,exclude=$fsname-OST0000
fi
}
if [ "$writeconf" ]; then
mopts=loop,mgsnode=$nid,$writeconf
+ if [ $fstype == "ldiskfs" ]; then
+ $r $TUNEFS --quota $tmp/ost || {
+ error_noexit "Enable ost quota feature"
+ return 1
+ }
+ fi
else
mopts=loop,mgsnode=$nid
fi
}
if [ "$dne_upgrade" != "no" ]; then
- $r2 $LCTL conf_param \
+ $r $LCTL conf_param \
$fsname-MDT0001.mdc.max_rpcs_in_flight=9 || {
error_noexit "Setting MDT1 \"max_rpcs_in_flight\""
return 1
}
- $r2 $LCTL conf_param $fsname-MDT0001.failover.node=$nid || {
+ $r $LCTL conf_param $fsname-MDT0001.failover.node=$nid || {
error_noexit "Setting MDT1 \"failover.node\""
return 1
}
- $r2 $LCTL conf_param $fsname-MDT0001.lov.stripesize=4M || {
+ $r $LCTL conf_param $fsname-MDT0001.lov.stripesize=4M || {
error_noexit "Setting MDT1 \"lov.stripesize\""
return 1
}
}
shall_cleanup_lustre=true
$LCTL set_param debug="$PTLDEBUG"
+
+ t32_verify_quota $node $fsname $tmp/mnt/lustre || {
+ error_noexit "verify quota failed"
+ return 1
+ }
+
if [ "$dne_upgrade" != "no" ]; then
$LFS mkdir -i 1 $tmp/mnt/lustre/remote_dir || {
error_noexit "set remote dir failed"
popd
fi
+ dd if=/dev/zero of=$tmp/mnt/lustre/tmp_file bs=10k count=10 || {
+ error_noexit "dd failed"
+ return 1
+ }
+ rm -rf $tmp/mnt/lustre/tmp_file || {
+ error_noexit "rm failed"
+ return 1
+ }
+
if $r test -f $tmp/sha1sums; then
# LU-2393 - do both sorts on same node to ensure locale
# is identical
run_test 41b "mount mds with --nosvc and --nomgs on first mount"
test_42() { #bug 14693
- setup
- check_mount || return 2
- do_facet mgs $LCTL conf_param lustre.llite.some_wrong_param=10
- umount_client $MOUNT
- mount_client $MOUNT || return 1
- cleanup
- return 0
+ setup
+ check_mount || error "client was not mounted"
+
+ do_facet mgs $LCTL conf_param $FSNAME.llite.some_wrong_param=10
+ umount_client $MOUNT ||
+ error "unmounting client failed with invalid llite param"
+ mount_client $MOUNT ||
+ error "mounting client failed with invalid llite param"
+
+ do_facet mgs $LCTL conf_param $FSNAME.sys.some_wrong_param=20
+ cleanup || error "stopping $FSNAME failed with invalid sys param"
+ setup
+ check_mount || "client was not mounted with invalid sys param"
+ cleanup || error "stopping $FSNAME failed with invalid sys param"
+ return 0
}
-run_test 42 "invalid config param should not prevent client from mounting"
+run_test 42 "allow client/server mount/unmount with invalid config param"
test_43() {
[ $UID -ne 0 -o $RUNAS_ID -eq 0 ] && skip_env "run as root"
}
run_test 50g "deactivated OST should not cause panic====================="
+# LU-642
+test_50h() {
+ # prepare MDT/OST, make OSC inactive for OST1
+ [ "$OSTCOUNT" -lt "2" ] && skip_env "$OSTCOUNT < 2, skipping" && return
+ do_facet ost1 "$TUNEFS --param osc.active=0 `ostdevname 1`" ||
+ error "tunefs OST1 failed"
+ start_mds || error "Unable to start MDT"
+ start_ost || error "Unable to start OST1"
+ start_ost2 || error "Unable to start OST2"
+ mount_client $MOUNT || error "client start failed"
+
+ mkdir -p $DIR/$tdir
+
+ # activatate OSC for OST1
+ local TEST="$LCTL get_param -n osc.${FSNAME}-OST0000-osc-[!M]*.active"
+ set_conf_param_and_check client \
+ "$TEST" "${FSNAME}-OST0000.osc.active" 1 ||
+ error "Unable to activate OST1"
+
+ mkdir -p $DIR/$tdir/2
+ $LFS setstripe -c -1 -i 0 $DIR/$tdir/2
+ sleep 1 && echo "create a file after OST1 is activated"
+ # create some file
+ createmany -o $DIR/$tdir/2/$tfile-%d 1
+
+ # check OSC import is working
+ stat $DIR/$tdir/2/* >/dev/null 2>&1 ||
+ error "some OSC imports are still not connected"
+
+ # cleanup
+ umount_client $MOUNT || error "Unable to umount client"
+ stop_ost2 || error "Unable to stop OST2"
+ cleanup_nocli
+}
+run_test 50h "LU-642: activate deactivated OST ==="
+
test_51() {
local LOCAL_TIMEOUT=20
run_test 65 "re-create the lost last_rcvd file when server mount"
test_66() {
+ [[ $(lustre_version_code mgs) -ge $(version_code 2.3.59) ]] ||
+ { skip "Need MGS version at least 2.3.59"; return 0; }
+
setup
local OST1_NID=$(do_facet ost1 $LCTL list_nids | head -1)
local MDS_NID=$(do_facet $SINGLEMDS $LCTL list_nids | head -1)
setup_noconfig
check_mount || error "error after nid replace"
- cleanup
+ cleanup || error "cleanup failed"
reformat
}
run_test 66 "replace nids"
}
run_test 71e "start OST0, MDT1, OST1, MDT0"
+test_72() { #LU-2634
+ local mdsdev=$(mdsdevname 1)
+ local ostdev=$(ostdevname 1)
+ local cmd="$E2FSCK -fnvd $mdsdev"
+ local fn=3
+
+ [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
+ skip "ldiskfs only test" && return
+
+ #tune MDT with "-O extents"
+ add $SINGLEMDS \
+ $(mkfs_opts $SINGLEMDS ${mdsdev}) --reformat $mdsdev ||
+ error "add $SINGLEMDS failed"
+ $TUNE2FS -O extents $mdsdev
+ add ost1 $(mkfs_opts ost1 $ostdev) --reformat $ostdev ||
+ error "add $ostdev failed"
+ start_mgsmds || error "start mds failed"
+ start_ost || error "start ost failed"
+ mount_client $MOUNT || error "mount client failed"
+
+ #create some short symlinks
+ mkdir -p $DIR/$tdir
+ createmany -o $DIR/$tdir/$tfile-%d $fn
+ echo "create $fn short symlinks"
+ for i in $(seq -w 1 $fn); do
+ ln -s $DIR/$tdir/$tfile-$i $MOUNT/$tfile-$i
+ done
+ ls -al $MOUNT
+
+ #umount
+ umount_client $MOUNT || error "umount client failed"
+ stop_mds || error "stop mds failed"
+ stop_ost || error "stop ost failed"
+
+ #run e2fsck
+ run_e2fsck $(facet_active_host $SINGLEMDS) $mdsdev "-n"
+}
+run_test 72 "test fast symlink with extents flag enabled"
+
if ! combined_mgs_mds ; then
stop mgs
fi