Whamcloud - gitweb
LU-12043 llite: move tunable params to sysfs_memparse()
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 8ac8138..541fae3 100755 (executable)
@@ -8932,11 +8932,6 @@ test_101c() {
 }
 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"
 
@@ -8956,7 +8951,10 @@ test_101d() {
        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")
@@ -8964,7 +8962,7 @@ test_101d() {
        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")
@@ -8972,7 +8970,6 @@ test_101d() {
        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
 
@@ -14323,8 +14320,10 @@ test_160j() {
                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"
@@ -14333,10 +14332,13 @@ test_160j() {
 
        # 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"
@@ -14348,15 +14350,6 @@ test_160j() {
 
        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"
 
@@ -16200,8 +16193,7 @@ test_224c() { # LU-6441
        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"
@@ -23001,6 +22993,42 @@ test_819b() {
 }
 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
 #