public inbox for linux-ext4@vger.kernel.org
 help / color / mirror / Atom feed
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;

>
> .
>

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox