diff options
author | Matthew Wilcox (Oracle) <willy@infradead.org> | 2024-02-28 19:29:37 +0100 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2024-03-05 14:07:24 +0100 |
commit | e1c420ac9968f40cc266ec648cce12fa55c891db (patch) | |
tree | 1906820c10cd47d40dc0e71a0b81751257031b57 /fs/fuse | |
parent | virtio_fs: remove duplicate check if queue is broken (diff) | |
download | linux-e1c420ac9968f40cc266ec648cce12fa55c891db.tar.xz linux-e1c420ac9968f40cc266ec648cce12fa55c891db.zip |
fuse: Remove fuse_writepage
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)" <willy@infradead.org>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse')
-rw-r--r-- | fs/fuse/file.c | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 3ce158f70927..e42aa6b0efb2 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -2104,34 +2104,6 @@ err: 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; @@ -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, |