Skip to content

Commit

Permalink
fuse: Remove fuse_writepage
Browse files Browse the repository at this point in the history
The writepage operation is deprecated as it leads to worse performance
under high memory pressure due to folios being written out in LRU order
rather than sequentially within a file.  Use filemap_migrate_folio() to
support dirty folio migration instead of writepage.

Signed-off-by: "Matthew Wilcox (Oracle)" <[email protected]>
Signed-off-by: Miklos Szeredi <[email protected]>
  • Loading branch information
Matthew Wilcox (Oracle) authored and Miklos Szeredi committed Mar 5, 2024
1 parent f9c2913 commit e1c420a
Showing 1 changed file with 1 addition and 29 deletions.
30 changes: 1 addition & 29 deletions fs/fuse/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -2104,34 +2104,6 @@ static int fuse_writepage_locked(struct page *page)
return error;
}

static int fuse_writepage(struct page *page, struct writeback_control *wbc)
{
struct fuse_conn *fc = get_fuse_conn(page->mapping->host);
int err;

if (fuse_page_is_writeback(page->mapping->host, page->index)) {
/*
* ->writepages() should be called for sync() and friends. We
* should only get here on direct reclaim and then we are
* allowed to skip a page which is already in flight
*/
WARN_ON(wbc->sync_mode == WB_SYNC_ALL);

redirty_page_for_writepage(wbc, page);
unlock_page(page);
return 0;
}

if (wbc->sync_mode == WB_SYNC_NONE &&
fc->num_background >= fc->congestion_threshold)
return AOP_WRITEPAGE_ACTIVATE;

err = fuse_writepage_locked(page);
unlock_page(page);

return err;
}

struct fuse_fill_wb_data {
struct fuse_writepage_args *wpa;
struct fuse_file *ff;
Expand Down Expand Up @@ -3347,10 +3319,10 @@ static const struct file_operations fuse_file_operations = {
static const struct address_space_operations fuse_file_aops = {
.read_folio = fuse_read_folio,
.readahead = fuse_readahead,
.writepage = fuse_writepage,
.writepages = fuse_writepages,
.launder_folio = fuse_launder_folio,
.dirty_folio = filemap_dirty_folio,
.migrate_folio = filemap_migrate_folio,
.bmap = fuse_bmap,
.direct_IO = fuse_direct_IO,
.write_begin = fuse_write_begin,
Expand Down

0 comments on commit e1c420a

Please sign in to comment.