]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
orangefs: Simplify bvec setup in orangefs_writepages_work()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 5 Mar 2025 20:47:32 +0000 (20:47 +0000)
committerChristian Brauner <brauner@kernel.org>
Thu, 6 Mar 2025 08:26:07 +0000 (09:26 +0100)
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>
Link: https://lore.kernel.org/r/20250305204734.1475264-9-willy@infradead.org
Tested-by: Mike Marshall <hubcap@omnibond.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/orangefs/inode.c

index 927c2829976c878a6df0cd9571d1322e900f045b..7b5272931e3b360a497c39bd195fd5ce7f0d6662 100644 (file)
@@ -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);