summaryrefslogtreecommitdiff
path: root/fs/btrfs/file.h
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2024-10-10 15:16:13 +1030
committerDavid Sterba <dsterba@suse.com>2024-11-11 14:34:19 +0100
commite820dbeb6ad1d66906663643302f2157347e1d8b (patch)
treef3bd534c16aba59923ed11171a0b6fd56b69bd74 /fs/btrfs/file.h
parentc87c299776e4d75bcc5559203ae2c37dc0396d80 (diff)
btrfs: convert btrfs_buffered_write() to use folios
The buffered write path is still heavily utilizing the page interface. Since we have converted it to do a page-by-page copying, it's much easier to convert all involved functions to folio interface, this involves: - btrfs_copy_from_user() - btrfs_drop_folio() - prepare_uptodate_page() - prepare_one_page() - lock_and_cleanup_extent_if_need() - btrfs_dirty_page() All function are changed to accept a folio parameter, and if the word "page" is in the function name, change that to "folio" too. The function btrfs_dirty_page() is exported for v1 space cache, convert v1 cache call site to convert its page to folio for the new interface. And there is a small enhancement for prepare_one_folio(), instead of manually waiting for the page writeback, let __filemap_get_folio() to handle that by using FGP_WRITEBEGIN, which implies (FGP_LOCK | FGP_WRITE | FGP_CREAT | FGP_STABLE). Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/file.h')
-rw-r--r--fs/btrfs/file.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/file.h b/fs/btrfs/file.h
index 69a7b78d99bb..de89e644be29 100644
--- a/fs/btrfs/file.h
+++ b/fs/btrfs/file.h
@@ -34,8 +34,8 @@ int btrfs_mark_extent_written(struct btrfs_trans_handle *trans,
ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from,
const struct btrfs_ioctl_encoded_io_args *encoded);
int btrfs_release_file(struct inode *inode, struct file *file);
-int btrfs_dirty_page(struct btrfs_inode *inode, struct page *page, loff_t pos,
- size_t write_bytes, struct extent_state **cached, bool noreserve);
+int btrfs_dirty_folio(struct btrfs_inode *inode, struct folio *folio, loff_t pos,
+ size_t write_bytes, struct extent_state **cached, bool noreserve);
int btrfs_fdatawrite_range(struct btrfs_inode *inode, loff_t start, loff_t end);
int btrfs_check_nocow_lock(struct btrfs_inode *inode, loff_t pos,
size_t *write_bytes, bool nowait);