]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
f2fs: fix to access i_size w/ i_size_read()
authorChao Yu <chao@kernel.org>
Wed, 29 Oct 2025 06:31:04 +0000 (14:31 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 4 Dec 2025 02:00:03 +0000 (02:00 +0000)
It recommends to use i_size_{read,write}() to access and update i_size,
otherwise, we may get wrong tearing value due to high 32-bits value
and low 32-bits value of i_size field are not updated atomically in
32-bits archicture machine.

Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
include/trace/events/f2fs.h

index edbbd869078f06265cb0777c585a4f3ae2cb7747..e1fae78d64a585c2e1f8594e45f06d9c60372d9a 100644 (file)
@@ -204,7 +204,7 @@ DECLARE_EVENT_CLASS(f2fs__inode,
                __entry->pino   = F2FS_I(inode)->i_pino;
                __entry->mode   = inode->i_mode;
                __entry->nlink  = inode->i_nlink;
-               __entry->size   = inode->i_size;
+               __entry->size   = i_size_read(inode);
                __entry->blocks = inode->i_blocks;
                __entry->advise = F2FS_I(inode)->i_advise;
        ),
@@ -353,7 +353,7 @@ TRACE_EVENT(f2fs_unlink_enter,
        TP_fast_assign(
                __entry->dev    = dir->i_sb->s_dev;
                __entry->ino    = dir->i_ino;
-               __entry->size   = dir->i_size;
+               __entry->size   = i_size_read(dir);
                __entry->blocks = dir->i_blocks;
                __assign_str(name);
        ),
@@ -433,7 +433,7 @@ DECLARE_EVENT_CLASS(f2fs__truncate_op,
        TP_fast_assign(
                __entry->dev    = inode->i_sb->s_dev;
                __entry->ino    = inode->i_ino;
-               __entry->size   = inode->i_size;
+               __entry->size   = i_size_read(inode);
                __entry->blocks = inode->i_blocks;
                __entry->from   = from;
        ),
@@ -1006,7 +1006,7 @@ TRACE_EVENT(f2fs_fallocate,
                __entry->mode   = mode;
                __entry->offset = offset;
                __entry->len    = len;
-               __entry->size   = inode->i_size;
+               __entry->size   = i_size_read(inode);
                __entry->blocks = inode->i_blocks;
                __entry->ret    = ret;
        ),