From b4f84d39fef8e4dfc70eac1a4e241a2355d2d083 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 13 Oct 2008 15:04:33 +0000 Subject: [PATCH] b=12182 i=adilger i=green i=nikita - oss read-only cache feature --- lustre/obdecho/echo_client.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lustre/obdecho/echo_client.c b/lustre/obdecho/echo_client.c index bd8127d..9c9a6b6 100644 --- a/lustre/obdecho/echo_client.c +++ b/lustre/obdecho/echo_client.c @@ -876,6 +876,8 @@ static int echo_client_prep_commit(struct obd_export *exp, int rw, off = offset; for(; tot_pages; tot_pages -= npages) { + int lpages; + if (tot_pages < npages) npages = tot_pages; @@ -887,11 +889,13 @@ static int echo_client_prep_commit(struct obd_export *exp, int rw, ioo.ioo_bufcnt = npages; oti->oti_transno = 0; - ret = obd_preprw(rw, exp, oa, 1, &ioo, npages, rnb, lnb, oti); + lpages = npages; + ret = obd_preprw(rw, exp, oa, 1, &ioo, rnb, &lpages, lnb, oti); if (ret != 0) GOTO(out, ret); + LASSERT(lpages == npages); - for (i = 0; i < npages; i++) { + for (i = 0; i < lpages; i++) { cfs_page_t *page = lnb[i].page; /* read past eof? */ @@ -915,7 +919,7 @@ static int echo_client_prep_commit(struct obd_export *exp, int rw, rnb[i].len); } - ret = obd_commitrw(rw, exp, oa, 1, &ioo, npages, lnb, oti, ret); + ret = obd_commitrw(rw, exp, oa, 1,&ioo,rnb,npages,lnb,oti,ret); if (ret != 0) GOTO(out, ret); } -- 1.8.3.1