399 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

ext4走到data=journal的异常路径导致bugon,kernel BUG at fs/ext4/inode.c:1898!

已完成
任务
创建于  
2023-10-27 10:38

问题复现:
(1)内核添加延时

[yebin@ceph-admin 15:35:16 ~/hulk-5.10-openeuler]$git diff
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 19e2a4ccf8a2..ff47f68c15de 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -40,6 +40,7 @@
#include <linux/bitops.h>
#include <linux/iomap.h>
#include <linux/iversion.h>
+#include <linux/delay.h>

#include "ext4_jbd2.h"
#include "xattr.h"
@@ -1886,6 +1887,7 @@ static int __ext4_journalled_writepage(struct page *page,
get_page(page);
unlock_page(page);

  •   mdelay(50);
      handle = ext4_journal_start(inode, EXT4_HT_WRITE_PAGE,
                                  ext4_writepage_trans_blocks(inode));
      if (IS_ERR(handle)) {
    

(2)
mount /dev/sda -o data=journal /home/test
fsstress -d /home/test -p 10 -l 1000000000&
while true;do echo 3 > /proc/sys/vm/drop_caches;done &

复现结果:

[root@localhost ~]# [ 159.679349] ------------[ cut here ]------------
[ 159.680678] kernel BUG at fs/ext4/inode.c:1913!
[ 159.681588] invalid opcode: 0000 [#1] SMP KASAN PTI
[ 159.682526] CPU: 3 PID: 284 Comm: kworker/u64:6 Not tainted 5.10.0-862.14.0.6.x86_64-08413-g5f3321777517-dirty #267
[ 159.684124] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_073836-buildvm-ppc64le-16.ppc.fedoraproject.org-3.fc31 04/01/2014
[ 159.684650] bash (2415): drop_caches: 3
[ 159.685850] Workqueue: writeback wb_workfn (flush-8:0)
[ 159.687189] RIP: 0010:__ext4_journalled_writepage+0xa04/0xc00
[ 159.687956] Code: 48 8d 7d 48 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 f6 01 00 00 48 8b 45 48 48 8d 50 ff a8 01 48 0f 45 ea e9 42 ff ff ff 0f 0b <0f> 0b 48 c
[ 159.690470] RSP: 0018:ffff8881060ff250 EFLAGS: 00010246
[ 159.691169] RAX: 002fffff80040015 RBX: ffff888123875420 RCX: ffffffff91983a1f
[ 159.692163] RDX: 1ffffd4000dc71c0 RSI: 0000000000000008 RDI: ffffea0006e38e00
[ 159.693122] RBP: ffffea0006e38e00 R08: 0000000000000001 R09: fffff94000dc71c1
[ 159.694059] R10: ffffea0006e38e07 R11: fffff94000dc71c0 R12: ffff88812943dcb0
[ 159.695004] R13: 00000000002472ef R14: ffff88812943db50 R15: ffffea0006e38e20
[ 159.695935] FS: 0000000000000000(0000) GS:ffff8883ae780000(0000) knlGS:0000000000000000
[ 159.696998] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 159.697745] CR2: 00007f638ea45000 CR3: 0000000116a22000 CR4: 00000000000006e0
[ 159.698690] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 159.699617] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 159.700552] Call Trace:
[ 159.700886] ? __die_body+0x1b/0x60
[ 159.701362] ? die+0x2b/0x50
[ 159.701752] ? do_trap+0x1a5/0x260
[ 159.702216] ? __ext4_journalled_writepage+0xa04/0xc00
[ 159.702883] ? do_error_trap+0x8a/0xf0
[ 159.703385] ? __ext4_journalled_writepage+0xa04/0xc00
[ 159.704072] ? exc_invalid_op+0x4e/0x70
[ 159.704572] ? __ext4_journalled_writepage+0xa04/0xc00
[ 159.705259] ? asm_exc_invalid_op+0x12/0x17
[ 159.705806] ? __ext4_journalled_writepage+0x6ef/0xc00
[ 159.706497] ? __ext4_journalled_writepage+0xa04/0xc00
[ 159.707178] ext4_writepage+0x58f/0x840
[ 159.707682] ? page_referenced+0x5e0/0x5e0
[ 159.708301] ? __ext4_journalled_writepage+0xc00/0xc00
[ 159.709002] ? page_referenced_one+0x430/0x430
[ 159.709593] ? invalid_page_referenced_vma+0x10/0x10
[ 159.710261] ? page_mapping+0x124/0x550
[ 159.710967] __writepage+0x63/0x150
[ 159.711427] write_cache_pages+0x37a/0xd60
[ 159.711995] ? wait_for_stable_page+0x1a0/0x1a0
[ 159.712596] ? wait_on_page_writeback+0x210/0x210
[ 159.713236] ? virtscsi_queuecommand+0x658/0x10f0
[ 159.713861] generic_writepages+0xe6/0x160
[ 159.714418] ? balance_dirty_pages_ratelimited+0x4c0/0x4c0
[ 159.715222] ? write_cache_pages+0x1cc/0xd60
[ 159.715791] ? blk_mq_dequeue_from_ctx+0x8a0/0x8a0
[ 159.716436] ? elv_rb_del+0x3b/0x80
[ 159.716912] ext4_writepages+0xc0a/0x18b0
[ 159.717450] ? _raw_spin_unlock+0xa/0x10
[ 159.718002] ? dd_dispatch_request+0x4f7/0x940
[ 159.718586] ? blk_mq_do_dispatch_sched+0x1ee/0x9c0
[ 159.719236] ? mpage_map_and_submit_extent+0xfd0/0xfd0
[ 159.719887] ? blk_mq_sched_mark_restart_hctx+0x60/0x60
[ 159.720582] ? generic_writepages+0xf1/0x160
[ 159.721169] ? balance_dirty_pages_ratelimited+0x4c0/0x4c0
[ 159.721909] ? find_busiest_group+0x10c1/0x3720
[ 159.722536] ? do_raw_spin_lock+0x125/0x290
[ 159.723109] ? __blk_mq_sched_dispatch_requests+0x37e/0x470
[ 159.723832] ? elv_attempt_insert_merge+0xf4/0x3a0
[ 159.724473] ? blk_mq_do_dispatch_ctx+0x860/0x860
[ 159.725115] ? _raw_spin_unlock+0xa/0x10
[ 159.725630] ? dd_insert_requests+0x3a1/0x9d0
[ 159.726217] ? do_writepages+0xe0/0x260
[ 159.726711] ? mpage_map_and_submit_extent+0xfd0/0xfd0
[ 159.727391] do_writepages+0xe0/0x260
[ 159.727875] ? __blk_mq_run_hw_queue+0xa8/0x230
[ 159.728482] ? page_writeback_cpu_online+0x20/0x20
[ 159.729134] ? do_raw_spin_lock+0x125/0x290
[ 159.729685] ? rwlock_bug.part.0+0x90/0x90
[ 159.730243] ? do_raw_spin_lock+0x125/0x290
[ 159.730791] ? do_raw_spin_lock+0x125/0x290
[ 159.731353] __writeback_single_inode+0xa4/0x730
[ 159.731980] writeback_sb_inodes+0x46d/0xa40
[ 159.732538] ? redirty_tail_locked+0x1f0/0x1f0
[ 159.733145] ? wb_calc_thresh+0xd0/0xd0
[ 159.733653] ? queue_io+0x2ae/0x390
[ 159.734144] wb_writeback+0x210/0x660
[ 159.734630] ? __writeback_inodes_wb+0x210/0x210
[ 159.735243] ? __wake_up_common+0x560/0x560
[ 159.735795] ? rwlock_bug.part.0+0x90/0x90
[ 159.736354] ? get_nr_dirty_inodes+0xad/0x100
[ 159.736939] wb_workfn+0x232/0xac0
[ 159.737393] ? inode_wait_for_writeback+0x30/0x30
[ 159.738035] ? send_call_function_single_ipi+0x6f/0x150
[ 159.738721] ? do_raw_spin_unlock+0x55/0x230
[ 159.739296] ? try_to_wake_up+0xae9/0x1080
[ 159.739865] ? read_word_at_a_time+0xe/0x20
[ 159.740436] ? strscpy+0x96/0x2b0
[ 159.740882] process_one_work+0x625/0xf10
[ 159.741430] worker_thread+0x8f/0xc70
[ 159.741937] ? process_one_work+0xf10/0xf10
[ 159.742501] kthread+0x2dd/0x3e0
[ 159.742952] ? __kthread_cancel_work+0x170/0x170
[ 159.743556] ret_from_fork+0x22/0x2d
[ 159.744050] Modules linked in:
[ 159.744920] ---[ end trace 7e356fddf854a420 ]---
[ 159.745543] RIP: 0010:__ext4_journalled_writepage+0xa04/0xc00
[ 159.746343] Code: 48 8d 7d 48 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 f6 01 00 00 48 8b 45 48 48 8d 50 ff a8 01 48 0f 45 ea e9 42 ff ff ff 0f 0b <0f> 0b 48 c
[ 159.748808] RSP: 0018:ffff8881060ff250 EFLAGS: 00010246
[ 159.749518] RAX: 002fffff80040015 RBX: ffff888123875420 RCX: ffffffff91983a1f
[ 159.750469] RDX: 1ffffd4000dc71c0 RSI: 0000000000000008 RDI: ffffea0006e38e00
[ 159.751420] RBP: ffffea0006e38e00 R08: 0000000000000001 R09: fffff94000dc71c1
[ 159.752376] R10: ffffea0006e38e07 R11: fffff94000dc71c0 R12: ffff88812943dcb0
[ 159.752737] bash (2415): drop_caches: 3
[ 159.753336] R13: 00000000002472ef R14: ffff88812943db50 R15: ffffea0006e38e20
[ 159.754888] FS: 0000000000000000(0000) GS:ffff8883ae780000(0000) knlGS:0000000000000000
[ 159.755980] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 159.756745] CR2: 00007f638ea45000 CR3: 0000000116a22000 CR4: 00000000000006e0
[ 159.757702] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 159.758677] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 159.759633] Kernel panic - not syncing: Fatal exception
[ 159.761180] Kernel Offset: 0x10000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[ 159.762601] ---[ end Kernel panic - not syncing: Fatal exception ]---

评论 (1)

Yang Erkun 创建了任务

Hi yang-erkun, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers.

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
5329419 openeuler ci bot 1632792936
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助