Whamcloud - gitweb
LU-12043 llite: make sure readahead cover current read
[fs/lustre-release.git] / lustre / tests / sanity.sh
index bc26d2d..37e6ab7 100644 (file)
@@ -2810,6 +2810,24 @@ test_27K() {
 }
 run_test 27K "basic ops on dir with foreign LMV"
 
+test_27L() {
+       remote_mds_nodsh && skip "remote MDS with nodsh"
+
+       local POOL=${POOL:-$TESTNAME}
+
+       if ! combined_mgs_mds ; then
+               mount_mgs_client
+               trap umount_mgs_client EXIT
+       fi
+
+       pool_add $POOL || error "pool_add failed"
+
+       lfs pool_list $MOUNT | grep -Fx "${FSNAME}.${POOL}" ||
+                error "pool_list does not contain ${FSNAME}.${POOL}:" \
+                      "$(lfs pool_list $MOUNT | grep -F "${POOL}")"
+}
+run_test 27L "lfs pool_list gives correct pool name"
+
 # createtest also checks that device nodes are created and
 # then visible correctly (#2091)
 test_28() { # bug 2091
@@ -8599,6 +8617,26 @@ test_101g() {
 }
 run_test 101g "Big bulk(4/16 MiB) readahead"
 
+test_101h() {
+       $LFS setstripe -i 0 -c 1 $DIR/$tfile
+
+       dd if=/dev/zero of=$DIR/$tfile bs=1M count=70 ||
+               error "dd 70M file failed"
+       echo Cancel LRU locks on lustre client to flush the client cache
+       cancel_lru_locks osc
+
+       echo "Reset readahead stats"
+       $LCTL set_param -n llite.*.read_ahead_stats 0
+
+       echo "Read 10M of data but cross 64M bundary"
+       dd if=$DIR/$tfile of=/dev/null bs=10M skip=6 count=1
+       local miss=$($LCTL get_param -n llite.*.read_ahead_stats |
+                       get_named_value 'misses' | cut -d" " -f1 | calc_total)
+       [ $miss -eq 1 ] || error "expected miss 1 but got $miss"
+       rm -f $p $DIR/$tfile
+}
+run_test 101h "Readahead should cover current read window"
+
 setup_test102() {
        test_mkdir $DIR/$tdir
        chown $RUNAS_ID $DIR/$tdir
@@ -19982,10 +20020,12 @@ test_413b() {
        qos_prio_free=${qos_prio_free%%%}
        qos_threshold_rr=$($LCTL get_param -n lmv.*.qos_threshold_rr | head -n1)
        qos_threshold_rr=${qos_threshold_rr%%%}
+       qos_maxage=$($LCTL get_param -n lmv.*.qos_maxage)
 
        stack_trap "$LCTL set_param lmv.*.qos_prio_free=$qos_prio_free" EXIT
        stack_trap "$LCTL set_param lmv.*.qos_threshold_rr=$qos_threshold_rr" \
                EXIT
+       stack_trap "$LCTL set_param lmv.*.qos_maxage=$qos_maxage" EXIT
 
        echo "mkdir with roundrobin"
 
@@ -20003,6 +20043,9 @@ test_413b() {
        rm -rf $DIR/$tdir/*
 
        $LCTL set_param lmv.*.qos_threshold_rr=$qos_threshold_rr
+       # Shorten statfs result age, so that it can be updated in time
+       $LCTL set_param lmv.*.qos_maxage=1
+       sleep_maxage
 
        local ffree
        local max
@@ -20539,6 +20582,7 @@ run_test 801c "rescan barrier bitmap"
 saved_MGS_MOUNT_OPTS=$MGS_MOUNT_OPTS
 saved_MDS_MOUNT_OPTS=$MDS_MOUNT_OPTS
 saved_OST_MOUNT_OPTS=$OST_MOUNT_OPTS
+saved_MOUNT_OPTS=$MOUNT_OPTS
 
 cleanup_802a() {
        trap 0
@@ -20547,6 +20591,7 @@ cleanup_802a() {
        MGS_MOUNT_OPTS=$saved_MGS_MOUNT_OPTS
        MDS_MOUNT_OPTS=$saved_MDS_MOUNT_OPTS
        OST_MOUNT_OPTS=$saved_OST_MOUNT_OPTS
+       MOUNT_OPTS=$saved_MOUNT_OPTS
        setupall
 }
 
@@ -20582,7 +20627,8 @@ test_802a() {
                error "(4) Mount client without 'ro' should fail"
 
        echo "Mount client with ro should succeed"
-       mount_client $MOUNT ro ||
+       MOUNT_OPTS=$(csa_add "$MOUNT_OPTS" -o ro)
+       mount_client $MOUNT ||
                error "(5) Mount client with 'ro' should succeed"
 
        echo "Modify should be refused"