+test_101g_brw_size_test() {
+ local mb=$1
+ local pages=$((mb * 1048576 / $(page_size)))
+
+ $LCTL set_param osc.*.max_pages_per_rpc=${mb}M ||
+ { error "unable to set max_pages_per_rpc=${mb}M"; return 1; }
+ for mp in $($LCTL get_param -n osc.*.max_pages_per_rpc); do
+ [ $mp -ne $pages ] && error "max_pages_per_rpc $mp != $pages" &&
+ return 2
+ done
+
+ $LCTL set_param -n osc.*.rpc_stats=0
+
+ # 10 RPCs should be enough for the test
+ local count=10
+ dd if=/dev/zero of=$DIR/$tfile bs=${mb}M count=$count ||
+ { error "dd write ${mb} MB blocks failed"; return 3; }
+ cancel_lru_locks osc
+ dd of=/dev/null if=$DIR/$tfile bs=${mb}M count=$count ||
+ { error "dd write ${mb} MB blocks failed"; return 4; }
+
+ # calculate number of full-sized read and write RPCs
+ rpcs=($($LCTL get_param -n 'osc.*.rpc_stats' |
+ sed -n '/pages per rpc/,/^$/p' |
+ awk '/'$pages':/ { reads += $2; writes += $5 };' \
+ 'END { print reads,writes }'))
+ [ ${rpcs[0]} -ne $count ] && error "${rpcs[0]} != $count read RPCs" &&
+ return 5
+ [ ${rpcs[1]} -ne $count ] && error "${rpcs[1]} != $count write RPCs" &&
+ return 6
+
+ return 0
+}
+