summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2026-03-26 12:54:07 +0300
committerChristian Brauner <brauner@kernel.org>2026-03-26 17:03:28 +0300
commitaec4fe7cce0c1857ea238d14b6ec6d29e9cd3feb (patch)
tree19f6802766e92f64fdcc20f6eaca4b23b89cd849
parent635aa2f6781729f86200fb92ca1d6fc123e88f52 (diff)
downloadlinux-aec4fe7cce0c1857ea238d14b6ec6d29e9cd3feb.tar.xz
fs: Drop sync_mapping_buffers() from __generic_file_fsync()
No filesystem calling __generic_file_fsync() uses metadata bh tracking. Drop sync_mapping_buffers() call from __generic_file_fsync() as it's pointless now which untangles buffer head handling from fs/libfs.c. Signed-off-by: Jan Kara <jack@suse.cz> Link: https://patch.msgid.link/20260326095354.16340-55-jack@suse.cz Signed-off-by: Christian Brauner <brauner@kernel.org>
-rw-r--r--fs/libfs.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/fs/libfs.c b/fs/libfs.c
index ed7242d614fe..e67e43c6509a 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -18,7 +18,6 @@
#include <linux/exportfs.h>
#include <linux/iversion.h>
#include <linux/writeback.h>
-#include <linux/buffer_head.h> /* sync_mapping_buffers */
#include <linux/fs_context.h>
#include <linux/pseudo_fs.h>
#include <linux/fsnotify.h>
@@ -1555,22 +1554,18 @@ int __generic_file_fsync(struct file *file, loff_t start, loff_t end,
{
struct inode *inode = file->f_mapping->host;
int err;
- int ret;
+ int ret = 0;
err = file_write_and_wait_range(file, start, end);
if (err)
return err;
- ret = sync_mapping_buffers(inode->i_mapping);
if (!(inode_state_read_once(inode) & I_DIRTY_ALL))
goto out;
if (datasync && !(inode_state_read_once(inode) & I_DIRTY_DATASYNC))
goto out;
- err = sync_inode_metadata(inode, 1);
- if (ret == 0)
- ret = err;
-
+ ret = sync_inode_metadata(inode, 1);
out:
/* check and advance again to catch errors after syncing out buffers */
err = file_check_and_advance_wb_err(file);