@@ -83,18 +83,18 @@ static int orangefs_writepages_work(struct orangefs_writepages *ow,
struct orangefs_write_range *wrp, wr;
struct iov_iter iter;
ssize_t ret;
+ size_t start;
loff_t len, off;
int i;
len = i_size_read(inode);
+ start = offset_in_page(ow->off);
for (i = 0; i < ow->npages; i++) {
set_page_writeback(ow->pages[i]);
- bvec_set_page(&ow->bv[i], ow->pages[i],
- min(page_offset(ow->pages[i]) + PAGE_SIZE,
- ow->off + ow->len) -
- max(ow->off, page_offset(ow->pages[i])),
- i == 0 ? ow->off - page_offset(ow->pages[i]) : 0);
+ bvec_set_page(&ow->bv[i], ow->pages[i], PAGE_SIZE - start,
+ start);
+ start = 0;
}
iov_iter_bvec(&iter, ITER_SOURCE, ow->bv, ow->npages, ow->len);
This produces a bvec which is slightly different as the last page is added in its entirety rather than only the portion which is being written back. However we don't use this information anywhere; the iovec has its own length parameter. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- fs/orangefs/inode.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)