}
test_20d() {
- if [ $MDS1_VERSION -lt $(version_code 2.12.50) ] ||
- [ $CLIENT_VERSION -lt $(version_code 2.12.50) ]; then
+ if [ "$MDS1_VERSION" -lt $(version_code 2.12.50) ] ||
+ [ "$CLIENT_VERSION" -lt $(version_code 2.12.50) ]; then
skip "Need version >= 2.12.50"
fi
[ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
local nm=$1
local key=$2
local val=$3
+ local facets=""
local i
if [ "$nm" == "active" ]; then
else
proc_param="$nm.$key"
fi
- is_sync=false
- for i in $(seq 1 20); do
- out=$(do_facet mds1 $LCTL get_param -n \
+ # check all MDS nodes, in reverse order to privilege remote ones first
+ for i in $(seq $MDSCOUNT); do
+ facets="mds$i $facets"
+ done
+ for facet in $facets; do
+ is_sync=false
+ for i in {1..20}; do
+ out=$(do_facet $facet $LCTL get_param -n \
nodemap.$proc_param 2>/dev/null)
- echo "On mds1, ${proc_param} = $out"
- [ "$val" == "$out" ] && is_sync=true && break
- sleep 1
+ echo "On $facet, ${proc_param} = $out"
+ [ "$val" == "$out" ] && is_sync=true && break
+ sleep 1
+ done
+ if ! $is_sync; then
+ error "$proc_param not updated on $facet after 20 secs"
+ fi
done
- if ! $is_sync; then
- error "$proc_param not updated on mds1 after 20 secs"
- fi
}
create_nodemap() {
check_nodemap $nm admin_nodemap 1
check_nodemap $nm trusted_nodemap 1
+ sleep 10
sepol=$(l_getsepol | cut -d':' -f2- | xargs)
- do_facet mgs $LCTL set_param nodemap.$nm.sepol="$sepol"
do_facet mgs $LCTL set_param -P nodemap.$nm.sepol="$sepol"
check_nodemap $nm sepol $sepol
do_facet mgs $LCTL nodemap_del $nm
+ wait_update_facet --verbose mds1 \
+ "$LCTL get_param nodemap.$nm.id 2>/dev/null | \
+ grep -c $nm || true" 0 30 ||
+ error "nodemap $nm could not be removed"
+
do_facet mgs $LCTL nodemap_activate 0
check_nodemap active x 0
}
test_21a() {
- local sepol
-
- [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+ [ "$MDS1_VERSION" -lt $(version_code 2.11.56) ] &&
skip "Need MDS >= 2.11.56"
+ local sepol
+
# umount client
if [ "$MOUNT_2" ] && $(grep -q $MOUNT2' ' /proc/mounts); then
umount_client $MOUNT2 || error "umount $MOUNT2 failed"
# store wrong sepol in nodemap
sepol="0:policy:0:0000000000000000000000000000000000000000000000000000000000000000"
- do_facet mgs $LCTL set_param nodemap.c0.sepol="$sepol"
do_facet mgs $LCTL set_param -P nodemap.c0.sepol="$sepol"
check_nodemap c0 sepol $sepol
run_test 21a "Send sepol at connect"
test_21b() {
- local sepol
-
- [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+ [ "$MDS1_VERSION" -lt $(version_code 2.11.56) ] &&
skip "Need MDS >= 2.11.56"
+ local sepol
+
mkdir -p $DIR/$tdir || error "failed to create $DIR/$tdir"
echo test > $DIR/$tdir/toopen ||
error "failed to write to $DIR/$tdir/toopen"
# store wrong sepol in nodemap
sepol="0:policy:0:0000000000000000000000000000000000000000000000000000000000000000"
- do_facet mgs $LCTL set_param nodemap.c0.sepol="$sepol"
do_facet mgs $LCTL set_param -P nodemap.c0.sepol="$sepol"
check_nodemap c0 sepol $sepol
# reset correct sepol
sepol=$(l_getsepol | cut -d':' -f2- | xargs)
- do_facet mgs $LCTL set_param nodemap.c0.sepol="$sepol"
do_facet mgs $LCTL set_param -P nodemap.c0.sepol="$sepol"
check_nodemap c0 sepol $sepol
- # metadata ops with sepol every 10 seconds only
- echo 10 > /sys/module/ptlrpc/parameters/send_sepol
+ # metadata ops with sepol every 1000 seconds only
+ echo 1000 > /sys/module/ptlrpc/parameters/send_sepol
+ local before=$(date +%s)
touch $DIR/$tdir/f6 || error "touch (4)"
lfs setstripe -c1 $DIR/$tdir/f7 || error "lfs setstripe (4)"
mkdir $DIR/$tdir/d6 || error "mkdir (4)"
ln $DIR/$tdir/toopen $DIR/$tdir/toopen_hl5 || error "hardlink (5)"
echo 3 > /proc/sys/vm/drop_caches
- sleep 10
+ local after=$(date +%s)
+ # change send_sepol to a smaller, already expired, value
+ echo $((after-before-1)) > /sys/module/ptlrpc/parameters/send_sepol
# metadata ops without matching sepol: should fail now
touch $DIR/$tdir/f10 && error "touch (6)"
lfs setstripe -c1 $DIR/$tdir/f11 && error "lfs setstripe (6)"