From: "yebin (H)" <yebin10@huawei.com>
To: syzbot ci <syzbot+ci218c29ae48f2e4ea@syzkaller.appspotmail.com>,
<adilger.kernel@dilger.ca>, <jack@suse.cz>,
<linux-ext4@vger.kernel.org>, <tytso@mit.edu>,
<yebin@huaweicloud.com>
Cc: <syzbot@lists.linux.dev>, <syzkaller-bugs@googlegroups.com>
Subject: Re: [syzbot ci] Re: ext4: test if inode's all dirty pages are submitted to disk
Date: Mon, 2 Mar 2026 22:08:37 +0800 [thread overview]
Message-ID: <69A599E5.1000801@huawei.com> (raw)
In-Reply-To: <69a561a0.050a0220.3a55be.0073.GAE@google.com>
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;
>
> .
>
next prev parent reply other threads:[~2026-03-02 14:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
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) [this message]
-- 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)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=69A599E5.1000801@huawei.com \
--to=yebin10@huawei.com \
--cc=adilger.kernel@dilger.ca \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=syzbot+ci218c29ae48f2e4ea@syzkaller.appspotmail.com \
--cc=syzbot@lists.linux.dev \
--cc=syzkaller-bugs@googlegroups.com \
--cc=tytso@mit.edu \
--cc=yebin@huaweicloud.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.