* [PATCH v2] ext4: test if inode's all dirty pages are submitted to disk
@ 2026-02-28 2:56 Ye Bin
2026-03-02 9:39 ` Jan Kara
2026-03-02 10:08 ` [syzbot ci] " syzbot ci
0 siblings, 2 replies; 6+ messages in thread
From: Ye Bin @ 2026-02-28 2:56 UTC (permalink / raw)
To: tytso, adilger.kernel, linux-ext4; +Cc: jack
From: Ye Bin <yebin10@huawei.com>
The commit aa373cf55099 ("writeback: stop background/kupdate works from
livelocking other works") introduced an issue where unmounting a filesystem
in a multi-logical-partition scenario could lead to batch file data loss.
This problem was not fixed until the commit d92109891f21 ("fs/writeback:
bail out if there is no more inodes for IO and queued once"). It took
considerable time to identify the root cause. Additionally, in actual
production environments, we frequently encountered file data loss after
normal system reboots. Therefore, we are adding a check in the inode
release flow to verify whether all dirty pages have been flushed to disk,
in order to determine whether the data loss is caused by a logic issue in
the filesystem code.
Signed-off-by: Ye Bin <yebin10@huawei.com>
---
fs/ext4/inode.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 396dc3a5d16b..a64d9c7381ea 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -184,6 +184,12 @@ void ext4_evict_inode(struct inode *inode)
if (EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)
ext4_evict_ea_inode(inode);
if (inode->i_nlink) {
+ /*
+ * If there's dirty page will lead to data loss, user
+ * could see stale data.
+ */
+ WARN_ON(!ext4_emergency_state(inode->i_sb) &&
+ mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY));
truncate_inode_pages_final(&inode->i_data);
goto no_delete;
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v2] ext4: test if inode's all dirty pages are submitted to disk
2026-02-28 2:56 [PATCH v2] ext4: test if inode's all dirty pages are submitted to disk Ye Bin
@ 2026-03-02 9:39 ` Jan Kara
2026-03-02 10:08 ` [syzbot ci] " syzbot ci
1 sibling, 0 replies; 6+ messages in thread
From: Jan Kara @ 2026-03-02 9:39 UTC (permalink / raw)
To: Ye Bin; +Cc: tytso, adilger.kernel, linux-ext4, jack
On Sat 28-02-26 10:56:50, Ye Bin wrote:
> From: Ye Bin <yebin10@huawei.com>
>
> The commit aa373cf55099 ("writeback: stop background/kupdate works from
> livelocking other works") introduced an issue where unmounting a filesystem
> in a multi-logical-partition scenario could lead to batch file data loss.
> This problem was not fixed until the commit d92109891f21 ("fs/writeback:
> bail out if there is no more inodes for IO and queued once"). It took
> considerable time to identify the root cause. Additionally, in actual
> production environments, we frequently encountered file data loss after
> normal system reboots. Therefore, we are adding a check in the inode
> release flow to verify whether all dirty pages have been flushed to disk,
> in order to determine whether the data loss is caused by a logic issue in
> the filesystem code.
>
> Signed-off-by: Ye Bin <yebin10@huawei.com>
Looks good! Thanks! Feel free to add:
Reviewed-by: Jan Kara <jack@suse.cz>
Honza
> ---
> fs/ext4/inode.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index 396dc3a5d16b..a64d9c7381ea 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -184,6 +184,12 @@ void ext4_evict_inode(struct inode *inode)
> if (EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)
> ext4_evict_ea_inode(inode);
> if (inode->i_nlink) {
> + /*
> + * If there's dirty page will lead to data loss, user
> + * could see stale data.
> + */
> + WARN_ON(!ext4_emergency_state(inode->i_sb) &&
> + mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY));
> truncate_inode_pages_final(&inode->i_data);
>
> goto no_delete;
> --
> 2.34.1
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
^ permalink raw reply [flat|nested] 6+ messages in thread* [syzbot ci] Re: ext4: test if inode's all dirty pages are submitted to disk
2026-02-28 2:56 [PATCH v2] ext4: test if inode's all dirty pages are submitted to disk Ye Bin
2026-03-02 9:39 ` Jan Kara
@ 2026-03-02 10:08 ` syzbot ci
2026-03-02 14:08 ` yebin (H)
1 sibling, 1 reply; 6+ messages in thread
From: syzbot ci @ 2026-03-02 10:08 UTC (permalink / raw)
To: adilger.kernel, jack, linux-ext4, tytso, yebin; +Cc: syzbot, syzkaller-bugs
syzbot ci has tested the following series
[v2] ext4: test if inode's all dirty pages are submitted to disk
https://lore.kernel.org/all/20260228025650.2664098-1-yebin@huaweicloud.com
* [PATCH v2] ext4: test if inode's all dirty pages are submitted to disk
and found the following issue:
WARNING in ext4_evict_inode
Full report is available here:
https://ci.syzbot.org/series/b58ccb85-a946-44ae-9d57-c02bee2a43ba
***
WARNING in ext4_evict_inode
tree: torvalds
URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
base: 4d349ee5c7782f8b27f6cb550f112c5e26fff38d
arch: amd64
compiler: Debian clang version 21.1.8 (++20251221033036+2078da43e25a-1~exp1~20251221153213.50), Debian LLD 21.1.8
config: https://ci.syzbot.org/builds/1accd9c8-371e-4c6c-9c4b-b930c65c23be/config
C repro: https://ci.syzbot.org/findings/ccbdbde1-d214-4e90-aeb7-d4bbda01329c/c_repro
syz repro: https://ci.syzbot.org/findings/ccbdbde1-d214-4e90-aeb7-d4bbda01329c/syz_repro
------------[ cut here ]------------
!ext4_emergency_state(inode->i_sb) && mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY)
WARNING: fs/ext4/inode.c:192 at ext4_evict_inode+0xce7/0x1020 fs/ext4/inode.c:191, CPU#1: syz-executor/5917
Modules linked in:
CPU: 1 UID: 0 PID: 5917 Comm: syz-executor Not tainted syzkaller #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
RIP: 0010:ext4_evict_inode+0xce7/0x1020 fs/ext4/inode.c:191
Code: f3 ff ff e8 ab 60 40 ff 49 89 dc 48 8b 5c 24 18 e9 ea f5 ff ff e8 99 60 40 ff 48 8b 5c 24 18 e9 db f5 ff ff e8 8a 60 40 ff 90 <0f> 0b 90 e9 cd f5 ff ff e8 7c 60 40 ff 48 8d 3d 85 e4 92 0d 67 48
RSP: 0018:ffffc900057e79a0 EFLAGS: 00010293
RAX: ffffffff82852b46 RBX: ffff88812000f5b8 RCX: ffff88811128ba00
RDX: 0000000000000000 RSI: 0000000004000000 RDI: 0000000000000000
RBP: ffffc900057e7ab0 R08: ffff8881111b6387 R09: 1ffff11022236c70
R10: dffffc0000000000 R11: ffffed1022236c71 R12: 1ffff92000afcf44
R13: dffffc0000000000 R14: 0000000004000000 R15: ffff8881111b6380
FS: 0000555570b0d500(0000) GS:ffff8882a9464000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fff533fce88 CR3: 000000010b644000 CR4: 00000000000006f0
Call Trace:
<TASK>
evict+0x61e/0xb10 fs/inode.c:846
dispose_list fs/inode.c:888 [inline]
evict_inodes+0x75a/0x7f0 fs/inode.c:942
generic_shutdown_super+0xaa/0x2d0 fs/super.c:632
kill_block_super+0x44/0x90 fs/super.c:1725
ext4_kill_sb+0x68/0xb0 fs/ext4/super.c:7459
deactivate_locked_super+0xbc/0x130 fs/super.c:476
cleanup_mnt+0x437/0x4d0 fs/namespace.c:1312
task_work_run+0x1d9/0x270 kernel/task_work.c:233
resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
__exit_to_user_mode_loop kernel/entry/common.c:67 [inline]
exit_to_user_mode_loop+0xed/0x480 kernel/entry/common.c:98
__exit_to_user_mode_prepare include/linux/irq-entry-common.h:226 [inline]
syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:256 [inline]
syscall_exit_to_user_mode include/linux/entry-common.h:325 [inline]
do_syscall_64+0x32d/0xf80 arch/x86/entry/syscall_64.c:100
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fb75539d9d7
Code: a2 c7 05 1c ed 24 00 00 00 00 00 eb 96 e8 e1 12 00 00 90 31 f6 e9 09 00 00 00 66 0f 1f 84 00 00 00 00 00 b8 a6 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 01 c3 48 c7 c2 e8 ff ff ff f7 d8 64 89 02 b8
RSP: 002b:00007ffe2e6b7108 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
RAX: 0000000000000000 RBX: 00007fb755431f90 RCX: 00007fb75539d9d7
RDX: 0000000000000000 RSI: 0000000000000009 RDI: 00007ffe2e6b71c0
RBP: 00007ffe2e6b71c0 R08: 00007ffe2e6b81c0 R09: 00000000ffffffff
R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffe2e6b8250
R13: 00007fb755431f90 R14: 000000000000f951 R15: 00007ffe2e6b8290
</TASK>
***
If these findings have caused you to resend the series or submit a
separate fix, please add the following tag to your commit message:
Tested-by: syzbot@syzkaller.appspotmail.com
---
This report is generated by a bot. It may contain errors.
syzbot ci engineers can be reached at syzkaller@googlegroups.com.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [syzbot ci] Re: ext4: test if inode's all dirty pages are submitted to disk
2026-03-02 10:08 ` [syzbot ci] " syzbot ci
@ 2026-03-02 14:08 ` yebin (H)
0 siblings, 0 replies; 6+ messages in thread
From: yebin (H) @ 2026-03-02 14:08 UTC (permalink / raw)
To: syzbot ci, adilger.kernel, jack, linux-ext4, tytso, yebin
Cc: syzbot, syzkaller-bugs
On 2026/3/2 18:08, syzbot ci wrote:
> syzbot ci has tested the following series
>
> [v2] ext4: test if inode's all dirty pages are submitted to disk
> https://lore.kernel.org/all/20260228025650.2664098-1-yebin@huaweicloud.com
> * [PATCH v2] ext4: test if inode's all dirty pages are submitted to disk
>
> and found the following issue:
> WARNING in ext4_evict_inode
>
> Full report is available here:
> https://ci.syzbot.org/series/b58ccb85-a946-44ae-9d57-c02bee2a43ba
>
> ***
>
> WARNING in ext4_evict_inode
>
> tree: torvalds
> URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
> base: 4d349ee5c7782f8b27f6cb550f112c5e26fff38d
> arch: amd64
> compiler: Debian clang version 21.1.8 (++20251221033036+2078da43e25a-1~exp1~20251221153213.50), Debian LLD 21.1.8
> config: https://ci.syzbot.org/builds/1accd9c8-371e-4c6c-9c4b-b930c65c23be/config
> C repro: https://ci.syzbot.org/findings/ccbdbde1-d214-4e90-aeb7-d4bbda01329c/c_repro
> syz repro: https://ci.syzbot.org/findings/ccbdbde1-d214-4e90-aeb7-d4bbda01329c/syz_repro
>
> ------------[ cut here ]------------
> !ext4_emergency_state(inode->i_sb) && mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY)
> WARNING: fs/ext4/inode.c:192 at ext4_evict_inode+0xce7/0x1020 fs/ext4/inode.c:191, CPU#1: syz-executor/5917
> Modules linked in:
> CPU: 1 UID: 0 PID: 5917 Comm: syz-executor Not tainted syzkaller #0 PREEMPT(full)
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
> RIP: 0010:ext4_evict_inode+0xce7/0x1020 fs/ext4/inode.c:191
> Code: f3 ff ff e8 ab 60 40 ff 49 89 dc 48 8b 5c 24 18 e9 ea f5 ff ff e8 99 60 40 ff 48 8b 5c 24 18 e9 db f5 ff ff e8 8a 60 40 ff 90 <0f> 0b 90 e9 cd f5 ff ff e8 7c 60 40 ff 48 8d 3d 85 e4 92 0d 67 48
> RSP: 0018:ffffc900057e79a0 EFLAGS: 00010293
> RAX: ffffffff82852b46 RBX: ffff88812000f5b8 RCX: ffff88811128ba00
> RDX: 0000000000000000 RSI: 0000000004000000 RDI: 0000000000000000
> RBP: ffffc900057e7ab0 R08: ffff8881111b6387 R09: 1ffff11022236c70
> R10: dffffc0000000000 R11: ffffed1022236c71 R12: 1ffff92000afcf44
> R13: dffffc0000000000 R14: 0000000004000000 R15: ffff8881111b6380
> FS: 0000555570b0d500(0000) GS:ffff8882a9464000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00007fff533fce88 CR3: 000000010b644000 CR4: 00000000000006f0
> Call Trace:
> <TASK>
> evict+0x61e/0xb10 fs/inode.c:846
> dispose_list fs/inode.c:888 [inline]
> evict_inodes+0x75a/0x7f0 fs/inode.c:942
> generic_shutdown_super+0xaa/0x2d0 fs/super.c:632
> kill_block_super+0x44/0x90 fs/super.c:1725
> ext4_kill_sb+0x68/0xb0 fs/ext4/super.c:7459
> deactivate_locked_super+0xbc/0x130 fs/super.c:476
> cleanup_mnt+0x437/0x4d0 fs/namespace.c:1312
> task_work_run+0x1d9/0x270 kernel/task_work.c:233
> resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
> __exit_to_user_mode_loop kernel/entry/common.c:67 [inline]
> exit_to_user_mode_loop+0xed/0x480 kernel/entry/common.c:98
> __exit_to_user_mode_prepare include/linux/irq-entry-common.h:226 [inline]
> syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:256 [inline]
> syscall_exit_to_user_mode include/linux/entry-common.h:325 [inline]
> do_syscall_64+0x32d/0xf80 arch/x86/entry/syscall_64.c:100
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
> RIP: 0033:0x7fb75539d9d7
> Code: a2 c7 05 1c ed 24 00 00 00 00 00 eb 96 e8 e1 12 00 00 90 31 f6 e9 09 00 00 00 66 0f 1f 84 00 00 00 00 00 b8 a6 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 01 c3 48 c7 c2 e8 ff ff ff f7 d8 64 89 02 b8
> RSP: 002b:00007ffe2e6b7108 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
> RAX: 0000000000000000 RBX: 00007fb755431f90 RCX: 00007fb75539d9d7
> RDX: 0000000000000000 RSI: 0000000000000009 RDI: 00007ffe2e6b71c0
> RBP: 00007ffe2e6b71c0 R08: 00007ffe2e6b81c0 R09: 00000000ffffffff
> R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffe2e6b8250
> R13: 00007fb755431f90 R14: 000000000000f951 R15: 00007ffe2e6b8290
> </TASK>
>
>
> ***
>
> If these findings have caused you to resend the series or submit a
> separate fix, please add the following tag to your commit message:
> Tested-by: syzbot@syzkaller.appspotmail.com
>
> ---
> This report is generated by a bot. It may contain errors.
> syzbot ci engineers can be reached at syzkaller@googlegroups.com.
>
[ 63.910480][ T5955] EXT4-fs (loop0): mounted filesystem
00000000-0000-0006-0000-000000000000 r/w without journal. Quota mode:
writeback.
[ 63.915765][ T5955] ext4 filesystem being mounted at /0/file1
supports timestamps until 2038-01-19 (0x7fffffff)
[ 63.921828][ T5955] EXT4-fs error (device loop0):
ext4_validate_block_bitmap:441: comm syz.0.17: bg 0: block 112: padding
at end of block bitmap is not set
[ 63.927661][ T5955] EXT4-fs (loop0): Delayed block allocation failed
for inode 15 at logical offset 16 with max blocks 16 with error 117
[ 63.932075][ T5955] EXT4-fs (loop0): This should not happen!! Data
will be lost
[ 63.932075][ T5955]
[ 63.946677][ T197] EXT4-fs (loop0): Delayed block allocation failed
for inode 15 at logical offset 32 with max blocks 36 with error 117
[ 63.960973][ T197] EXT4-fs (loop0): This should not happen!! Data
will be lost
In this case, WARN_ON is not suitable for the fault scenario. It is
better to directly add log printing.
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 396dc3a5d16b..d4d65593bce2 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -184,6 +184,14 @@ void ext4_evict_inode(struct inode *inode)
if (EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)
ext4_evict_ea_inode(inode);
if (inode->i_nlink) {
+ /*
+ * If there's dirty page will lead to data loss, user
+ * could see stale data.
+ */
+ if (unlikely(!ext4_emergency_state(inode->i_sb) &&
+ mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY)))
+ ext4_warning_inode(inode, "data will be lost");
+
truncate_inode_pages_final(&inode->i_data);
goto no_delete;
>
> .
>
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] ext4: test if inode's all dirty pages are submitted to disk
@ 2026-02-26 11:07 Ye Bin
2026-02-27 7:52 ` [syzbot ci] " syzbot ci
0 siblings, 1 reply; 6+ messages in thread
From: Ye Bin @ 2026-02-26 11:07 UTC (permalink / raw)
To: tytso, adilger.kernel, linux-ext4; +Cc: jack
From: Ye Bin <yebin10@huawei.com>
The commit aa373cf55099 ("writeback: stop background/kupdate works from
livelocking other works") introduced an issue where unmounting a filesystem
in a multi-logical-partition scenario could lead to batch file data loss.
This problem was not fixed until the commit d92109891f21 ("fs/writeback:
bail out if there is no more inodes for IO and queued once"). It took
considerable time to identify the root cause. Additionally, in actual
production environments, we frequently encountered file data loss after
normal system reboots. Therefore, we are adding a check in the inode
release flow to verify whether all dirty pages have been flushed to disk,
in order to determine whether the data loss is caused by a logic issue in
the filesystem code.
Signed-off-by: Ye Bin <yebin10@huawei.com>
---
fs/ext4/inode.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 396dc3a5d16b..37df83ce9ad6 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -184,6 +184,11 @@ void ext4_evict_inode(struct inode *inode)
if (EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)
ext4_evict_ea_inode(inode);
if (inode->i_nlink) {
+ /*
+ * If there's dirty page will lead to data loss, user
+ * could see stale data.
+ */
+ WARN_ON(mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY));
truncate_inode_pages_final(&inode->i_data);
goto no_delete;
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [syzbot ci] Re: ext4: test if inode's all dirty pages are submitted to disk
2026-02-26 11:07 [PATCH] " Ye Bin
@ 2026-02-27 7:52 ` syzbot ci
2026-02-28 1:14 ` yebin (H)
0 siblings, 1 reply; 6+ messages in thread
From: syzbot ci @ 2026-02-27 7:52 UTC (permalink / raw)
To: adilger.kernel, jack, linux-ext4, tytso, yebin; +Cc: syzbot, syzkaller-bugs
syzbot ci has tested the following series
[v1] ext4: test if inode's all dirty pages are submitted to disk
https://lore.kernel.org/all/20260226110718.1904825-1-yebin@huaweicloud.com
* [PATCH] ext4: test if inode's all dirty pages are submitted to disk
and found the following issue:
WARNING in ext4_evict_inode
Full report is available here:
https://ci.syzbot.org/series/8f9434e5-a73c-4b31-be9f-e9b76f1c2596
***
WARNING in ext4_evict_inode
tree: torvalds
URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
base: f4d0ec0aa20d49f09dc01d82894ce80d72de0560
arch: amd64
compiler: Debian clang version 21.1.8 (++20251221033036+2078da43e25a-1~exp1~20251221153213.50), Debian LLD 21.1.8
config: https://ci.syzbot.org/builds/7053c6f2-2ee6-4a1d-9f74-d2f56facd9f9/config
C repro: https://ci.syzbot.org/findings/4f7c2b91-8121-443d-9a4f-991feda8057c/c_repro
syz repro: https://ci.syzbot.org/findings/4f7c2b91-8121-443d-9a4f-991feda8057c/syz_repro
------------[ cut here ]------------
mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY)
WARNING: fs/ext4/inode.c:191 at ext4_evict_inode+0xbdc/0xf10 fs/ext4/inode.c:191, CPU#1: syz-executor/5915
Modules linked in:
CPU: 1 UID: 0 PID: 5915 Comm: syz-executor Not tainted syzkaller #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
RIP: 0010:ext4_evict_inode+0xbdc/0xf10 fs/ext4/inode.c:191
Code: ba 2c 02 00 48 8b bc 24 a0 00 00 00 e8 bd 49 14 00 e9 71 fe ff ff e8 43 63 40 ff 90 0f 0b 90 e9 e6 f4 ff ff e8 35 63 40 ff 90 <0f> 0b 90 e9 f2 f5 ff ff e8 27 63 40 ff 48 8d 3d 50 df 92 0d 67 48
RSP: 0018:ffffc900048b79a0 EFLAGS: 00010293
RAX: ffffffff8285287b RBX: ffff88811d980298 RCX: ffff8881027d8000
RDX: 0000000000000000 RSI: 0000000004000000 RDI: 0000000000000000
RBP: ffffc900048b7ab0 R08: ffffffff901181b7 R09: 1ffffffff2023036
R10: dffffc0000000000 R11: fffffbfff2023037 R12: 1ffff92000916f44
R13: dffffc0000000000 R14: ffff88811d9804b8 R15: 0000000004000000
FS: 000055557d541500(0000) GS:ffff8882a9464000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000c00003e720 CR3: 000000010f9d2000 CR4: 00000000000006f0
Call Trace:
<TASK>
evict+0x61e/0xb10 fs/inode.c:846
dispose_list fs/inode.c:888 [inline]
evict_inodes+0x75a/0x7f0 fs/inode.c:942
generic_shutdown_super+0xaa/0x2d0 fs/super.c:632
kill_block_super+0x44/0x90 fs/super.c:1725
ext4_kill_sb+0x68/0xb0 fs/ext4/super.c:7459
deactivate_locked_super+0xbc/0x130 fs/super.c:476
cleanup_mnt+0x437/0x4d0 fs/namespace.c:1312
task_work_run+0x1d9/0x270 kernel/task_work.c:233
resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
__exit_to_user_mode_loop kernel/entry/common.c:67 [inline]
exit_to_user_mode_loop+0xed/0x480 kernel/entry/common.c:98
__exit_to_user_mode_prepare include/linux/irq-entry-common.h:226 [inline]
syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:256 [inline]
syscall_exit_to_user_mode include/linux/entry-common.h:325 [inline]
do_syscall_64+0x32d/0xf80 arch/x86/entry/syscall_64.c:100
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fcf3c79d897
Code: a2 c7 05 5c ee 24 00 00 00 00 00 eb 96 e8 e1 12 00 00 90 31 f6 e9 09 00 00 00 66 0f 1f 84 00 00 00 00 00 b8 a6 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 01 c3 48 c7 c2 e8 ff ff ff f7 d8 64 89 02 b8
RSP: 002b:00007ffe2362cef8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
RAX: 0000000000000000 RBX: 00007fcf3c831ef0 RCX: 00007fcf3c79d897
RDX: 0000000000000000 RSI: 0000000000000009 RDI: 00007ffe2362cfb0
RBP: 00007ffe2362cfb0 R08: 00007ffe2362dfb0 R09: 00000000ffffffff
R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffe2362e040
R13: 00007fcf3c831ef0 R14: 000000000000f11c R15: 00007ffe2362e080
</TASK>
***
If these findings have caused you to resend the series or submit a
separate fix, please add the following tag to your commit message:
Tested-by: syzbot@syzkaller.appspotmail.com
---
This report is generated by a bot. It may contain errors.
syzbot ci engineers can be reached at syzkaller@googlegroups.com.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [syzbot ci] Re: ext4: test if inode's all dirty pages are submitted to disk
2026-02-27 7:52 ` [syzbot ci] " syzbot ci
@ 2026-02-28 1:14 ` yebin (H)
0 siblings, 0 replies; 6+ messages in thread
From: yebin (H) @ 2026-02-28 1:14 UTC (permalink / raw)
To: syzbot ci, adilger.kernel, jack, linux-ext4, tytso, yebin
Cc: syzbot, syzkaller-bugs
This is my oversight. If the file system has already become read-only
and dirty pages cannot be flushed back, no warning should be generated
at this time.
On 2026/2/27 15:52, syzbot ci wrote:
> syzbot ci has tested the following series
>
> [v1] ext4: test if inode's all dirty pages are submitted to disk
> https://lore.kernel.org/all/20260226110718.1904825-1-yebin@huaweicloud.com
> * [PATCH] ext4: test if inode's all dirty pages are submitted to disk
>
> and found the following issue:
> WARNING in ext4_evict_inode
>
> Full report is available here:
> https://ci.syzbot.org/series/8f9434e5-a73c-4b31-be9f-e9b76f1c2596
>
> ***
>
> WARNING in ext4_evict_inode
>
> tree: torvalds
> URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
> base: f4d0ec0aa20d49f09dc01d82894ce80d72de0560
> arch: amd64
> compiler: Debian clang version 21.1.8 (++20251221033036+2078da43e25a-1~exp1~20251221153213.50), Debian LLD 21.1.8
> config: https://ci.syzbot.org/builds/7053c6f2-2ee6-4a1d-9f74-d2f56facd9f9/config
> C repro: https://ci.syzbot.org/findings/4f7c2b91-8121-443d-9a4f-991feda8057c/c_repro
> syz repro: https://ci.syzbot.org/findings/4f7c2b91-8121-443d-9a4f-991feda8057c/syz_repro
>
> ------------[ cut here ]------------
> mapping_tagged(&inode->i_data, PAGECACHE_TAG_DIRTY)
> WARNING: fs/ext4/inode.c:191 at ext4_evict_inode+0xbdc/0xf10 fs/ext4/inode.c:191, CPU#1: syz-executor/5915
> Modules linked in:
> CPU: 1 UID: 0 PID: 5915 Comm: syz-executor Not tainted syzkaller #0 PREEMPT(full)
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
> RIP: 0010:ext4_evict_inode+0xbdc/0xf10 fs/ext4/inode.c:191
> Code: ba 2c 02 00 48 8b bc 24 a0 00 00 00 e8 bd 49 14 00 e9 71 fe ff ff e8 43 63 40 ff 90 0f 0b 90 e9 e6 f4 ff ff e8 35 63 40 ff 90 <0f> 0b 90 e9 f2 f5 ff ff e8 27 63 40 ff 48 8d 3d 50 df 92 0d 67 48
> RSP: 0018:ffffc900048b79a0 EFLAGS: 00010293
> RAX: ffffffff8285287b RBX: ffff88811d980298 RCX: ffff8881027d8000
> RDX: 0000000000000000 RSI: 0000000004000000 RDI: 0000000000000000
> RBP: ffffc900048b7ab0 R08: ffffffff901181b7 R09: 1ffffffff2023036
> R10: dffffc0000000000 R11: fffffbfff2023037 R12: 1ffff92000916f44
> R13: dffffc0000000000 R14: ffff88811d9804b8 R15: 0000000004000000
> FS: 000055557d541500(0000) GS:ffff8882a9464000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 000000c00003e720 CR3: 000000010f9d2000 CR4: 00000000000006f0
> Call Trace:
> <TASK>
> evict+0x61e/0xb10 fs/inode.c:846
> dispose_list fs/inode.c:888 [inline]
> evict_inodes+0x75a/0x7f0 fs/inode.c:942
> generic_shutdown_super+0xaa/0x2d0 fs/super.c:632
> kill_block_super+0x44/0x90 fs/super.c:1725
> ext4_kill_sb+0x68/0xb0 fs/ext4/super.c:7459
> deactivate_locked_super+0xbc/0x130 fs/super.c:476
> cleanup_mnt+0x437/0x4d0 fs/namespace.c:1312
> task_work_run+0x1d9/0x270 kernel/task_work.c:233
> resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
> __exit_to_user_mode_loop kernel/entry/common.c:67 [inline]
> exit_to_user_mode_loop+0xed/0x480 kernel/entry/common.c:98
> __exit_to_user_mode_prepare include/linux/irq-entry-common.h:226 [inline]
> syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:256 [inline]
> syscall_exit_to_user_mode include/linux/entry-common.h:325 [inline]
> do_syscall_64+0x32d/0xf80 arch/x86/entry/syscall_64.c:100
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
> RIP: 0033:0x7fcf3c79d897
> Code: a2 c7 05 5c ee 24 00 00 00 00 00 eb 96 e8 e1 12 00 00 90 31 f6 e9 09 00 00 00 66 0f 1f 84 00 00 00 00 00 b8 a6 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 01 c3 48 c7 c2 e8 ff ff ff f7 d8 64 89 02 b8
> RSP: 002b:00007ffe2362cef8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
> RAX: 0000000000000000 RBX: 00007fcf3c831ef0 RCX: 00007fcf3c79d897
> RDX: 0000000000000000 RSI: 0000000000000009 RDI: 00007ffe2362cfb0
> RBP: 00007ffe2362cfb0 R08: 00007ffe2362dfb0 R09: 00000000ffffffff
> R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffe2362e040
> R13: 00007fcf3c831ef0 R14: 000000000000f11c R15: 00007ffe2362e080
> </TASK>
>
>
> ***
>
> If these findings have caused you to resend the series or submit a
> separate fix, please add the following tag to your commit message:
> Tested-by: syzbot@syzkaller.appspotmail.com
>
> ---
> This report is generated by a bot. It may contain errors.
> syzbot ci engineers can be reached at syzkaller@googlegroups.com.
>
>
> .
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-03-02 14:08 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-28 2:56 [PATCH v2] ext4: test if inode's all dirty pages are submitted to disk Ye Bin
2026-03-02 9:39 ` Jan Kara
2026-03-02 10:08 ` [syzbot ci] " syzbot ci
2026-03-02 14:08 ` yebin (H)
-- strict thread matches above, loose matches on Subject: below --
2026-02-26 11:07 [PATCH] " Ye Bin
2026-02-27 7:52 ` [syzbot ci] " syzbot ci
2026-02-28 1:14 ` yebin (H)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox