ALWAYS_EXCEPT="$CONF_SANITY_EXCEPT 32newtarball"
# bug number for skipped test: LU-11915
-ALWAYS_EXCEPT="$ALWAYS_EXCEPT 110 115"
+ALWAYS_EXCEPT="$ALWAYS_EXCEPT 110"
# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
if $SHARED_KEY; then
shall_cleanup_lustre=true
$r $LCTL set_param debug="$PTLDEBUG"
- # Leave re-enabling this to a separate patch for LU-11558
- # t32_verify_quota $SINGLEMDS $fsname $tmp/mnt/lustre || {
- # error_noexit "verify quota failed"
- # return 1
- #}
+ t32_verify_quota $SINGLEMDS $fsname $tmp/mnt/lustre || {
+ error_noexit "verify quota failed"
+ return 1
+ }
if $r test -f $tmp/list; then
#
local ldevconfpath=$1
local fstype=
local fsldevformat=""
- touch $ldevconfpath
+ rm -f $ldevconfpath
- fstype=$(facet_fstype mgs)
- if [ "$fstype" == zfs ]; then
- fsldevformat="$fstype:"
- else
+ local facets="mgs,$(get_facets OST),$(get_facets MDS)"
+ for facet in ${facets//,/ }; do
fsldevformat=""
- fi
-
- printf "%s\t-\t%s-MGS0000\t%s%s\n" \
- $mgs_HOST \
- $FSNAME \
- $fsldevformat \
- $(mgsdevname) > $ldevconfpath
-
- local mdsfo_host=$mdsfailover_HOST;
- if [ -z "$mdsfo_host" ]; then
- mdsfo_host="-"
- fi
-
- for num in $(seq $MDSCOUNT); do
- fstype=$(facet_fstype mds$num)
- if [ "$fstype" == zfs ]; then
- fsldevformat="$fstype:"
- else
- fsldevformat=""
- fi
-
- printf "%s\t%s\t%s-MDT%04d\t%s%s\n" \
- $mds_HOST \
- $mdsfo_host \
- $FSNAME \
- $num \
- $fsldevformat \
- $(mdsdevname $num) >> $ldevconfpath
- done
-
- local ostfo_host=$ostfailover_HOST;
- if [ -z "$ostfo_host" ]; then
- ostfo_host="-"
- fi
-
- for num in $(seq $OSTCOUNT); do
- fstype=$(facet_fstype ost$num)
- if [ "$fstype" == zfs ]; then
- fsldevformat="$fstype:"
- else
- fsldevformat=""
+ fstype=$(facet_fstype $facet)
+ [ "$fstype" = zfs ] && fsldevformat="$fstype:"
+ local host=$(facet_host $facet)
+ local fo="-"
+ local varfo=${facet}failover_HOST
+ if [ $facet == mgs ] && combined_mgs_mds; then
+ varfo=mds1failover_HOST
fi
-
- printf "%s\t%s\t%s-OST%04d\t%s%s\n" \
- $ost_HOST \
- $ostfo_host \
+ [ -n "${!varfo}" ] && fo=${!varfo}
+ local type=$(echo $facet | tr -d "[:digit:]" | \
+ tr "[:lower:]" "[:upper:]" | sed s/MDS/MDT/ )
+ local num=1
+ [ ${facet} == mgs ] ||
+ num=$(facet_number $facet)
+ printf "%s\t%s\t%s-%s%04x\t%s%s\n" \
+ ${host} \
+ ${fo} \
$FSNAME \
- $num \
+ $type \
+ $(( num - 1 )) \
$fsldevformat \
- $(ostdevname $num) >> $ldevconfpath
+ $(facet_device $facet) >> $ldevconfpath
done
echo "----- $ldevconfpath -----"
}
compare_ldev_output() {
- ldev_output=$1
- expected_output=$2
+ local ldev_output=$1
+ local expected_output=$2
sort $expected_output -o $expected_output
sort $ldev_output -o $ldev_output
generate_nids $NIDSPATH
# echo the mgs nid and compare it to environment variable MGSNID
- # also, ldev.conf and nids is a server side thing, use the OSS
- # hostname
- local output
- output=$($LDEV -c $LDEVCONFPATH -H $ost_HOST -n $NIDSPATH echo %m)
-
- echo "-- START OF LDEV OUTPUT --"
- echo -e "$output"
- echo "--- END OF LDEV OUTPUT ---"
-
- # ldev failed, error
- if [ $? -ne 0 ]; then
- rm $LDEVCONFPATH $NIDSPATH
- error "ldev failed to execute!"
- fi
-
- # need to process multiple lines because of combined MGS and MDS
- echo -e $output | awk '{ print $2 }' | while read -r line ; do
- if [ "$line" != "$MGSNID" ]; then
- rm $LDEVCONFPATH $NIDSPATH
- error "ldev failed mgs nid '$line', expected '$MGSNID'"
- fi
+ local facets="$(get_facets OST),$(get_facets MDS),mgs"
+ for facet in ${facets//,/ }; do
+ local host=$(facet_host $facet)
+ local output=$($LDEV -c $LDEVCONFPATH -H $host -n $NIDSPATH echo %m)
+
+ echo "-- START OF LDEV OUTPUT --"
+ echo -e "$output"
+ echo "--- END OF LDEV OUTPUT ---"
+
+ [ -z "$output" ] &&
+ error "ldev failed to execute!"
+
+ # need to process multiple lines because of
+ # several targets on host
+ echo -e $output | awk '{ print $2 }' | while read -r line ; do
+ [ "$line" = "$MGSNID" ] ||
+ error "ldev failed mgs nid '$line', \
+ expected '$MGSNID'"
+ done
done
-
- rm $LDEVCONFPATH $NIDSPATH
+ rm -f $LDEVCONFPATH $NIDSPATH
}
run_test 92 "ldev returns MGS NID correctly in command substitution"
printf "%s-MGS0000\n" $FSNAME > $EXPECTED_OUTPUT
for num in $(seq $MDSCOUNT); do
- printf "%s-MDT%04d\n" $FSNAME $num >> $EXPECTED_OUTPUT
+ printf "%s-MDT%04x\n" $FSNAME $((num - 1)) >> $EXPECTED_OUTPUT
done
for num in $(seq $OSTCOUNT); do
- printf "%s-OST%04d\n" $FSNAME $num >> $EXPECTED_OUTPUT
+ printf "%s-OST%04x\n" $FSNAME $((num - 1)) >> $EXPECTED_OUTPUT
done
compare_ldev_output $LDEV_OUTPUT $EXPECTED_OUTPUT
echo "$mgs_HOST-$(facet_fstype mgs)" > $EXPECTED_OUTPUT
- if [ "$mgs_HOST" == "$mds_HOST" ]; then
- for num in $(seq $MDSCOUNT); do
- echo "$mds_HOST-$(facet_fstype mds$num)" \
+ local facets="$(get_facets OST),$(get_facets MDS)"
+ for facet in ${facets//,/ }; do
+ local host=$(facet_host $facet)
+ [ "$mgs_HOST" == "$host" ] &&
+ echo "$host-$(facet_fstype $facet)" \
>> $EXPECTED_OUTPUT
- done
- fi
-
- if [ "$mgs_HOST" == "$ost_HOST" ]; then
- for num in $(seq $OSTCOUNT); do
- echo "$ost_HOST-$(facet_fstype ost$num)" \
- >> $EXPECTED_OUTPUT
- done
- fi
+ done
compare_ldev_output $LDEV_OUTPUT $EXPECTED_OUTPUT
fi
for num in $(seq $MDSCOUNT); do
- printf "%s-MDT%04d\n" $FSNAME $num >> $EXPECTED_OUTPUT
+ printf "%s-MDT%04x\n" $FSNAME $((num - 1)) >> $EXPECTED_OUTPUT
done
compare_ldev_output $LDEV_OUTPUT $EXPECTED_OUTPUT
rm $EXPECTED_OUTPUT
for num in $(seq $OSTCOUNT); do
- printf "%s-OST%04d\n" $FSNAME $num >> $EXPECTED_OUTPUT
+ printf "%s-OST%04x\n" $FSNAME $((num - 1)) >> $EXPECTED_OUTPUT
done
compare_ldev_output $LDEV_OUTPUT $EXPECTED_OUTPUT
echo "$dbfs_ver" | egrep -w "1.44.3.wc1|1.44.5.wc1|1.45.2.wc1" &&
skip_env "This version of debugfs doesn't show inode number"
- is_dm_flakey_dev $SINGLEMDS $(mdsdevname 1) &&
- skip "This test can not be executed on flakey dev"
-
IMAGESIZE=$((3072 << 30)) # 3072 GiB
stopall
+ local saved_flakey=${FLAKEY}
+ stack_trap "FLAKEY=$saved_flakey" EXIT
+ FLAKEY=false
+
echo "client1: "
lctl dl
mount | grep lustre
echo "mds1: "
- do_facet mds1 "hostname; ifconfig; lctl dl; mount"
+ do_facet mds1 "hostname; lctl dl; mount"
echo "ost1: "
- do_facet ost1 "hostname; ifconfig; lctl dl; mount"
+ do_facet ost1 "hostname; lctl dl; mount"
# We need MDT size 3072GB, because it is smallest
# partition that can store 2B inodes
do_facet $SINGLEMDS "mkdir -p $TMP/$tdir"
mkdir -p $DIR/$tdir || error "mkdir $DIR/$tdir fail"
goal="/sys/fs/ldiskfs/$(basename $mdsdev)/inode_goal"
-echo goal: $goal
+ echo goal: $goal
# 2147483648 is 0x80000000
do_facet $SINGLEMDS "echo 2147483648 >> $goal; grep . $goal"
touch $DIR/$tdir/$tfile
- # attrs from 1 to 15 go to block, 16th - to inode
- for i in {1..16}; do
+ # attrs from 1 to 16 go to block, 17th - to inode
+ for i in {1..17}; do
local nm="trusted.ea$i"
setfattr -n $nm -v $(printf "xattr%0250d" $i) $DIR/$tdir/$tfile
done
+ do_facet $SINGLEMDS $DEBUGFS -c -R "stat ROOT/$tdir/$tfile" $mdsdev
+
# inode <2147483649> trusted.ea16 (255)
local inode_num=$(do_facet $SINGLEMDS \
"$DEBUGFS -c -R 'stat ROOT/$tdir/$tfile' $mdsdev" |
- awk '/ea16/ { print $2 }' |
+ awk '/ea17/ { print $2 }' |
sed -e 's/>//' -e 's/<//' -e 's/\"//')
echo "inode num: $inode_num"
[ $inode_num -ge 2147483648 ] || error "inode $inode_num too small"
}
run_test 120 "cross-target rename should not create bad symlinks"
+test_121(){
+ stopall
+ start_mgsmds || error "MGS MDS Start failed"
+ fail mgs
+ stop_mds || error "Stopping MDSes failed"
+ #failback
+ start_mds
+ fail mgs
+ stop_mds || error "Stopping MDSes failed"
+}
+run_test 121 "failover MGS"
+
test_122a() {
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
[[ "$OST1_VERSION" -ge $(version_code 2.11.53) ]] ||
echo "Writeconf"
writeconf_all
echo "Remounting"
- mountmgs
- mountmds
- mountoss
- mountcli
+ setup_noconfig
# Reapply the config from before
echo "Setting configuration parameters"
}
run_test 128 "Force using remote logs with --nolocallogs"
+test_129()
+{
+ stopall
+ start_mds || error "MDS start failed"
+ format_ost 1
+ start ost1 $(ostdevname 1) $OST_MOUNT_OPTS &&
+ error "start ost1 should fail" || true
+ start ost1 $(ostdevname 1) $OST_MOUNT_OPTS &&
+ error "second start ost1 should fail" || true
+ do_facet ost1 "$TUNEFS --writeconf $(ostdevname 1)"
+ start ost1 $(ostdevname 1) $OST_MOUNT_OPTS ||
+ error "start ost1 failed"
+ stop ost1
+ stop_mds
+}
+run_test 129 "attempt to connect an OST with the same index should fail"
+
test_130()
{
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
}
run_test 130 "re-register an MDT after writeconf"
+test_131() {
+ [ "$mds1_FSTYPE" == "ldiskfs" ] || skip "ldiskfs only test"
+ do_facet mds1 $DEBUGFS -R features $(mdsdevname 1) |
+ grep -q project || skip "skip project quota not supported"
+
+ local projid
+
+ setupall
+ test_mkdir -c $MDSCOUNT -p $DIR/$tdir
+ $LFS project -p 1000 $DIR/$tdir || error "set dir project id failed"
+ createmany -o $DIR/$tdir/f 512
+ for ((i = 0; i < 512; ++i)); do
+ $LFS project -p $i $DIR/$tdir/f${i} ||
+ error "set f${i} project id failed"
+ done
+
+ test_mkdir -c $MDSCOUNT -p $DIR/$tdir.inherit
+ $LFS project -p 1001 -s $DIR/$tdir.inherit
+ createmany -o $DIR/$tdir.inherit/f 128
+ (( $($LFS project $DIR/$tdir.inherit/f* |
+ awk '$1 == 1001 { print }' | wc -l) == 128 )) ||
+ error "files did not inherit projid 1001"
+
+ stopall
+
+ for i in $(seq $MDSCOUNT); do
+ mds_backup_restore mds$i ||
+ error "Backup/restore on mds$i failed"
+ done
+
+ setupall
+
+ projid=($($LFS project -d $DIR/$tdir))
+ [ ${projid[0]} == "1000" ] ||
+ error "projid expected 1000 not ${projid[0]}"
+ for ((i = 0; i < 512; ++i)); do
+ projid=($($LFS project $DIR/$tdir/f${i}))
+ [ ${projid[0]} == "$i" ] ||
+ error "projid expected $i not ${projid[0]}"
+ done
+
+ (( $($LFS project $DIR/$tdir.inherit/f* |
+ awk '$1 == 1001 { print }' | wc -l) == 128 )) ||
+ error "restore did not copy projid 1001"
+}
+run_test 131 "MDT backup restore with project ID"
+
if ! combined_mgs_mds ; then
stop mgs
fi