From: Matthew Wilcox (Oracle) Date: Wed, 10 Jul 2024 17:46:15 +0000 (-0400) Subject: buffer: Use a folio in generic_write_end() X-Git-Tag: v6.12-rc1~214^2~2^2~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=696876d03542a1c348e004511c4a307770481286;p=thirdparty%2Fkernel%2Flinux.git buffer: Use a folio in generic_write_end() Replaces two implicit calls to compound_head() with one. Reviewed-by: Josef Bacik Signed-off-by: Matthew Wilcox (Oracle) Signed-off-by: Christian Brauner --- diff --git a/fs/buffer.c b/fs/buffer.c index a9aeb04da3981..4483388108021 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2283,6 +2283,7 @@ int generic_write_end(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata) { + struct folio *folio = page_folio(page); struct inode *inode = mapping->host; loff_t old_size = inode->i_size; bool i_size_changed = false; @@ -2293,7 +2294,7 @@ int generic_write_end(struct file *file, struct address_space *mapping, * No need to use i_size_read() here, the i_size cannot change under us * because we hold i_rwsem. * - * But it's important to update i_size while still holding page lock: + * But it's important to update i_size while still holding folio lock: * page writeout could otherwise come in and zero beyond i_size. */ if (pos + copied > inode->i_size) { @@ -2301,8 +2302,8 @@ int generic_write_end(struct file *file, struct address_space *mapping, i_size_changed = true; } - unlock_page(page); - put_page(page); + folio_unlock(folio); + folio_put(folio); if (old_size < pos) pagecache_isize_extended(inode, old_size, pos);