io->ci_obj, ra.cra_end, page_idx);
/* update read ahead RPC size.
* NB: it's racy but doesn't matter */
- if (ras->ras_rpc_size > ra.cra_rpc_size &&
+ if (ras->ras_rpc_size != ra.cra_rpc_size &&
ra.cra_rpc_size > 0)
ras->ras_rpc_size = ra.cra_rpc_size;
/* trim it to align with optimal RPC size */
struct ll_file_data *fd = LUSTRE_FPRIVATE(file);
struct ll_readahead_state *ras = &fd->fd_ras;
struct lu_env *local_env = NULL;
+ unsigned long fast_read_pages =
+ max(RA_REMAIN_WINDOW_MIN, ras->ras_rpc_size);
struct vvp_page *vpg;
result = -ENODATA;
* the case, we can't do fast IO because we will need
* a cl_io to issue the RPC. */
if (ras->ras_window_start + ras->ras_window_len <
- ras->ras_next_readahead + PTLRPC_MAX_BRW_PAGES) {
+ ras->ras_next_readahead + fast_read_pages) {
/* export the page and skip io stack */
vpg->vpg_ra_used = 1;
cl_page_export(env, page, 1);