Skip to content

Commit 6930b8d

Browse files
josefbacikMiklos Szeredi
authored andcommitted
fuse: convert fuse_writepage_need_send to take a folio
fuse_writepage_need_send is called by fuse_writepages_fill() which already has a folio. Change fuse_writepage_need_send() to take a folio instead, add a helper to check if the folio range is under writeback and use this, as well as the appropriate folio helpers in the rest of the function. Update fuse_writepage_need_send() to pass in the folio directly. Reviewed-by: Joanne Koong <[email protected]> Signed-off-by: Josef Bacik <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
1 parent 65fe891 commit 6930b8d

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

fs/fuse/file.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -483,14 +483,19 @@ static void fuse_wait_on_page_writeback(struct inode *inode, pgoff_t index)
483483
wait_event(fi->page_waitq, !fuse_page_is_writeback(inode, index));
484484
}
485485

486+
static inline bool fuse_folio_is_writeback(struct inode *inode,
487+
struct folio *folio)
488+
{
489+
pgoff_t last = folio_next_index(folio) - 1;
490+
return fuse_range_is_writeback(inode, folio_index(folio), last);
491+
}
492+
486493
static void fuse_wait_on_folio_writeback(struct inode *inode,
487494
struct folio *folio)
488495
{
489496
struct fuse_inode *fi = get_fuse_inode(inode);
490-
pgoff_t last = folio_next_index(folio) - 1;
491497

492-
wait_event(fi->page_waitq,
493-
!fuse_range_is_writeback(inode, folio_index(folio), last));
498+
wait_event(fi->page_waitq, !fuse_folio_is_writeback(inode, folio));
494499
}
495500

496501
/*
@@ -2288,7 +2293,7 @@ static bool fuse_writepage_add(struct fuse_writepage_args *new_wpa,
22882293
return false;
22892294
}
22902295

2291-
static bool fuse_writepage_need_send(struct fuse_conn *fc, struct page *page,
2296+
static bool fuse_writepage_need_send(struct fuse_conn *fc, struct folio *folio,
22922297
struct fuse_args_pages *ap,
22932298
struct fuse_fill_wb_data *data)
22942299
{
@@ -2300,7 +2305,7 @@ static bool fuse_writepage_need_send(struct fuse_conn *fc, struct page *page,
23002305
* the pages are faulted with get_user_pages(), and then after the read
23012306
* completed.
23022307
*/
2303-
if (fuse_page_is_writeback(data->inode, page->index))
2308+
if (fuse_folio_is_writeback(data->inode, folio))
23042309
return true;
23052310

23062311
/* Reached max pages */
@@ -2312,7 +2317,7 @@ static bool fuse_writepage_need_send(struct fuse_conn *fc, struct page *page,
23122317
return true;
23132318

23142319
/* Discontinuity */
2315-
if (data->orig_pages[ap->num_pages - 1]->index + 1 != page->index)
2320+
if (data->orig_pages[ap->num_pages - 1]->index + 1 != folio_index(folio))
23162321
return true;
23172322

23182323
/* Need to grow the pages array? If so, did the expansion fail? */
@@ -2341,7 +2346,7 @@ static int fuse_writepages_fill(struct folio *folio,
23412346
goto out_unlock;
23422347
}
23432348

2344-
if (wpa && fuse_writepage_need_send(fc, &folio->page, ap, data)) {
2349+
if (wpa && fuse_writepage_need_send(fc, folio, ap, data)) {
23452350
fuse_writepages_send(data);
23462351
data->wpa = NULL;
23472352
}

0 commit comments

Comments
 (0)