]> git.baikalelectronics.ru Git - kernel.git/commit
ext4: fast commit may miss file actions
authorXin Yin <yinxin.x@bytedance.com>
Mon, 17 Jan 2022 09:36:55 +0000 (17:36 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 3 Feb 2022 15:57:02 +0000 (10:57 -0500)
commita54f53261c81ddb01d3a65997191a906d0bd3ffd
treea648751c31aeff636c8dd01a19858a5a4f607561
parent06bb134af690bfc8d3fbef20252f5b6b267f6f6f
ext4: fast commit may miss file actions

in the follow scenario:
1. jbd start transaction n
2. task A get new handle for transaction n+1
3. task A do some actions and add inode to FC_Q_MAIN fc_q
4. jbd complete transaction n and clear FC_Q_MAIN fc_q
5. task A call fsync

Fast commit will lost the file actions during a full commit.

we should also add updates to staging queue during a full commit.
and in ext4_fc_cleanup(), when reset a inode's fc track range, check
it's i_sync_tid, if it bigger than current transaction tid, do not
rest it, or we will lost the track range.

And EXT4_MF_FC_COMMITTING is not needed anymore, so drop it.

Signed-off-by: Xin Yin <yinxin.x@bytedance.com>
Link: https://lore.kernel.org/r/20220117093655.35160-3-yinxin.x@bytedance.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@kernel.org
fs/ext4/ext4.h
fs/ext4/fast_commit.c
fs/ext4/super.c