* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*/
/*
*/
static int ll_read_ahead_page(const struct lu_env *env, struct cl_io *io,
struct cl_page_list *queue,
- int index, struct address_space *mapping)
+ pgoff_t index, struct address_space *mapping)
{
struct page *vmpage;
struct cl_object *clob = ll_i2info(mapping->host)->lli_clob;
stride_pg_count(pgoff_t st_off, unsigned long st_len, unsigned long st_pgs,
unsigned long off, unsigned long length)
{
- unsigned long start = off > st_off ? off - st_off : 0;
- unsigned long end = off + length > st_off ? off + length - st_off : 0;
+ __u64 start = off > st_off ? off - st_off : 0;
+ __u64 end = off + length > st_off ? off + length - st_off : 0;
unsigned long start_left = 0;
unsigned long end_left = 0;
unsigned long pg_count;
if (end_left > st_pgs)
end_left = st_pgs;
- CDEBUG(D_READA, "start %lu, end %lu start_left %lu end_left %lu \n",
+ CDEBUG(D_READA, "start "LPU64", end "LPU64" start_left %lu end_left %lu \n",
start, end, start_left, end_left);
if (start == end)
* For stride I/O mode, just check whether the idx is inside
* the ria_pages. */
return ria->ria_length == 0 || ria->ria_length == ria->ria_pages ||
- (idx - ria->ria_stoff) % ria->ria_length < ria->ria_pages;
+ (idx >= ria->ria_stoff && (idx - ria->ria_stoff) %
+ ria->ria_length < ria->ria_pages);
}
static int ll_read_ahead_pages(const struct lu_env *env,
int zero = 0, stride_detect = 0, ra_miss = 0;
ENTRY;
- cfs_spin_lock(&sbi->ll_lock);
cfs_spin_lock(&ras->ras_lock);
ll_ra_stats_inc_sbi(sbi, hit ? RA_STAT_HIT : RA_STAT_MISS);
RAS_CDEBUG(ras);
ras->ras_request_index++;
cfs_spin_unlock(&ras->ras_lock);
- cfs_spin_unlock(&sbi->ll_lock);
return;
}