From ee79954c8ab879309ae657b1bc5a5bd3b6df454c Mon Sep 17 00:00:00 2001 From: green Date: Sat, 10 Jan 2009 06:45:17 +0000 Subject: [PATCH] b=18016 r=deen,wangdi page index type in ll_read_ahead_page should be pgoff_t, not int --- lustre/ChangeLog | 6 ++++++ lustre/llite/rw.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 5596579..a1735f5 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -803,6 +803,12 @@ Descriptoin: Don't sync journal after every i/o Details : Implement write RPC replay to allow server replies for write RPCs before data is on disk. +Severity : low +Bugzilla : 18016 +Description: Slow reads beyond 8Tb offsets. +Details : Page index integer overflow in ll_read_ahead_page + + ------------------------------------------------------------------------------- 2008-05-26 Sun Microsystems, Inc. diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index 3ca70f2..d9cfd91 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -1377,7 +1377,7 @@ struct ll_ra_read *ll_ra_read_get(struct file *f) } static int ll_read_ahead_page(struct obd_export *exp, struct obd_io_group *oig, - int index, struct address_space *mapping) + pgoff_t index, struct address_space *mapping) { struct ll_async_page *llap; struct page *page; @@ -1410,7 +1410,7 @@ static int ll_read_ahead_page(struct obd_export *exp, struct obd_io_group *oig, ll_ra_stats_inc(mapping, RA_STAT_FAILED_MATCH); CDEBUG(D_READA | D_PAGE, "Adding page to cache failed index " - "%d\n", index); + "%ld\n", index); CDEBUG(D_READA, "nolock page\n"); GOTO(unlock_page, rc = -ENOLCK); } -- 1.8.3.1