]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
udf: Use sync_inode_metadata() to writeout IS_SYNC inode
authorJan Kara <jack@suse.cz>
Mon, 27 Jul 2026 10:49:29 +0000 (12:49 +0200)
committerChristian Brauner <brauner@kernel.org>
Mon, 27 Jul 2026 14:25:32 +0000 (16:25 +0200)
When setting inode size we directly writeout inode in udf_setsize().
This misses proper writeout of other inode related metadata. Use
sync_inode_metadata() instead and move the flushing to udf_setattr() to
avoid it for udf_evict_inode() where it would be pointless.

Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20260727104923.3828017-31-jack@suse.cz
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
fs/udf/file.c
fs/udf/inode.c

index 0748cc965117e222a8383c9b184cf8934e5989f4..57d11606a2a7765bb9924765c22e782aa7890eca 100644 (file)
@@ -246,6 +246,8 @@ static int udf_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
 
        setattr_copy(&nop_mnt_idmap, inode, attr);
        mark_inode_dirty(inode);
+       if (IS_SYNC(inode))
+               sync_inode_metadata(inode, 1);
        return 0;
 }
 
index 05e61a65478c4c79f3c37165a0396177f79ddd60..600705f5edf9eae0b5721c3afe2fce53276d6983 100644 (file)
@@ -1328,10 +1328,7 @@ set_size:
        }
 update_time:
        inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
-       if (IS_SYNC(inode))
-               udf_sync_inode(inode);
-       else
-               mark_inode_dirty(inode);
+       mark_inode_dirty(inode);
        return err;
 }