}
run_test 101c "check stripe_size aligned read-ahead ================="
-set_read_ahead() {
- $LCTL get_param -n llite.*.max_read_ahead_mb | head -n 1
- $LCTL set_param -n llite.*.max_read_ahead_mb $1 > /dev/null 2>&1
-}
-
test_101d() {
[ $PARALLEL == "yes" ] && skip "skip parallel run"
cancel_lru_locks osc
echo Disable read-ahead
- local old_READAHEAD=$(set_read_ahead 0)
+ local old_RA=$($LCTL get_param -n llite.*.max_read_ahead_mb | head -n 1)
+ $LCTL set_param -n llite.*.max_read_ahead_mb=0
+ stack_trap "$LCTL set_param -n llite.*.max_read_ahead_mb $old_RA" EXIT
+ $LCTL get_param -n llite.*.max_read_ahead_mb
echo Reading the test file $file with read-ahead disabled
local raOFF=$(do_and_time "dd if=$file of=/dev/null bs=1M count=$sz_MB")
echo Cancel LRU locks on lustre client to flush the client cache
cancel_lru_locks osc
echo Enable read-ahead with ${ra_MB}MB
- set_read_ahead $ra_MB
+ $LCTL set_param -n llite.*.max_read_ahead_mb=$ra_MB
echo Reading the test file $file with read-ahead enabled
local raON=$(do_and_time "dd if=$file of=/dev/null bs=1M count=$sz_MB")
echo "read-ahead disabled time read $raOFF"
echo "read-ahead enabled time read $raON"
- set_read_ahead $old_READAHEAD
rm -f $file
wait_delete_completed
skip "Need MDS version at least 2.12.56"
mount_client $MOUNT2 || error "mount_client on $MOUNT2 failed"
+ stack_trap "umount $MOUNT2" EXIT
changelog_register || error "first changelog_register failed"
+ stack_trap "changelog_deregister" EXIT
# generate some changelog
test_mkdir -c $MDSCOUNT $DIR/$tdir || error "mkdir $tdir failed"
# open the changelog device
exec 3>/dev/changelog-$FSNAME-MDT0000
+ stack_trap "exec 3>&-" EXIT
exec 4</dev/changelog-$FSNAME-MDT0000
+ stack_trap "exec 4<&-" EXIT
# umount the first lustre mount
umount $MOUNT
+ stack_trap "mount_client $MOUNT" EXIT
# read changelog
cat <&4 >/dev/null || error "read changelog failed"
printf 'clear:'$cl_user':0' >&3
- # close
- exec 3>&-
- exec 4<&-
-
- # cleanup
- changelog_deregister || error "changelog_deregister failed"
-
- umount $MOUNT2
- mount_client $MOUNT || error "mount_client on $MOUNT failed"
}
run_test 160j "client can be umounted while its chanangelog is being used"
save_writethrough $p
set_cache writethrough on
- local pages_per_rpc=$($LCTL get_param \
- osc.*.max_pages_per_rpc)
+ local pages_per_rpc=$($LCTL get_param osc.*.max_pages_per_rpc)
local at_max=$($LCTL get_param -n at_max)
local timeout=$($LCTL get_param -n timeout)
local test_at="at_max"
}
run_test 819b "too big niobuf in write"
+
+function test_820_start_ost() {
+ sleep 5
+
+ for num in $(seq $OSTCOUNT); do
+ start ost$num $(ostdevname $num) $OST_MOUNT_OPTS
+ done
+}
+
+test_820() {
+ [[ $MDSCOUNT -lt 2 ]] && skip_env "needs >= 2 MDTs"
+
+ mkdir $DIR/$tdir
+ umount_client $MOUNT || error "umount failed"
+ for num in $(seq $OSTCOUNT); do
+ stop ost$num
+ done
+
+ # mount client with no active OSTs
+ # so that the client can't initialize max LOV EA size
+ # from OSC notifications
+ mount_client $MOUNT || error "mount failed"
+ # delay OST starting to keep this 0 max EA size for a while
+ test_820_start_ost &
+
+ # create a directory on MDS2
+ test_mkdir -i 1 -c1 $DIR/$tdir/mds2 ||
+ error "Failed to create directory"
+ # open intent should update default EA size
+ # see mdc_update_max_ea_from_body()
+ # notice this is the very first RPC to MDS2
+ cp /etc/services $DIR/$tdir/mds2 ||
+ error "Failed to copy files to mds$n"
+}
+run_test 820 "update max EA from open intent"
+
#
# tests that do cleanup/setup should be run at the end
#