Skip to content

Commit 40eca02

Browse files
Matthew Wilcox (Oracle)brauner
authored andcommitted
orangefs: Convert orangefs_writepage_locked() to take a folio
Both callers have a folio, pass it in and use it inside orangefs_writepage_locked(). Removes a few hidden calls to compound_head() and accesses to page->mapping. Signed-off-by: "Matthew Wilcox (Oracle)" <[email protected]> Link: https://lore.kernel.org/r/[email protected] Tested-by: Mike Marshall <[email protected]> Signed-off-by: Christian Brauner <[email protected]>
1 parent 506382d commit 40eca02

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

fs/orangefs/inode.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,22 @@
1616
#include "orangefs-kernel.h"
1717
#include "orangefs-bufmap.h"
1818

19-
static int orangefs_writepage_locked(struct page *page,
20-
struct writeback_control *wbc)
19+
static int orangefs_writepage_locked(struct folio *folio,
20+
struct writeback_control *wbc)
2121
{
22-
struct inode *inode = page->mapping->host;
22+
struct inode *inode = folio->mapping->host;
2323
struct orangefs_write_range *wr = NULL;
2424
struct iov_iter iter;
2525
struct bio_vec bv;
2626
size_t wlen;
2727
ssize_t ret;
2828
loff_t len, off;
2929

30-
set_page_writeback(page);
30+
folio_start_writeback(folio);
3131

3232
len = i_size_read(inode);
33-
if (PagePrivate(page)) {
34-
wr = (struct orangefs_write_range *)page_private(page);
33+
if (folio->private) {
34+
wr = folio->private;
3535
WARN_ON(wr->pos >= len);
3636
off = wr->pos;
3737
if (off + wr->len > len)
@@ -40,27 +40,27 @@ static int orangefs_writepage_locked(struct page *page,
4040
wlen = wr->len;
4141
} else {
4242
WARN_ON(1);
43-
off = page_offset(page);
44-
if (off + PAGE_SIZE > len)
43+
off = folio_pos(folio);
44+
wlen = folio_size(folio);
45+
46+
if (wlen > len - off)
4547
wlen = len - off;
46-
else
47-
wlen = PAGE_SIZE;
4848
}
4949
/* Should've been handled in orangefs_invalidate_folio. */
5050
WARN_ON(off == len || off + wlen > len);
5151

5252
WARN_ON(wlen == 0);
53-
bvec_set_page(&bv, page, wlen, off % PAGE_SIZE);
53+
bvec_set_folio(&bv, folio, wlen, offset_in_folio(folio, off));
5454
iov_iter_bvec(&iter, ITER_SOURCE, &bv, 1, wlen);
5555

5656
ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, wlen,
5757
len, wr, NULL, NULL);
5858
if (ret < 0) {
59-
mapping_set_error(page->mapping, ret);
59+
mapping_set_error(folio->mapping, ret);
6060
} else {
6161
ret = 0;
6262
}
63-
kfree(detach_page_private(page));
63+
kfree(folio_detach_private(folio));
6464
return ret;
6565
}
6666

@@ -179,7 +179,7 @@ static int orangefs_writepages_callback(struct folio *folio,
179179
orangefs_writepages_work(ow, wbc);
180180
ow->npages = 0;
181181
}
182-
ret = orangefs_writepage_locked(&folio->page, wbc);
182+
ret = orangefs_writepage_locked(folio, wbc);
183183
mapping_set_error(folio->mapping, ret);
184184
folio_unlock(folio);
185185
folio_end_writeback(folio);
@@ -474,7 +474,7 @@ static int orangefs_launder_folio(struct folio *folio)
474474
};
475475
folio_wait_writeback(folio);
476476
if (folio_clear_dirty_for_io(folio)) {
477-
r = orangefs_writepage_locked(&folio->page, &wbc);
477+
r = orangefs_writepage_locked(folio, &wbc);
478478
folio_end_writeback(folio);
479479
}
480480
return r;

0 commit comments

Comments
 (0)