402 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

xfs_growfs扩容时并发磁盘插拔测试,出现“XFS (dm-3): xfs_buf_find: daddr 0x400003 out of range, EOFS 0x400000”报错

已完成
任务
创建于  
2023-05-23 16:20

复现方法:

  1. 合入diff重编内核
diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c
index d3a97a028560..a284555aafa8 100644
--- a/fs/xfs/xfs_trans_ail.c
+++ b/fs/xfs/xfs_trans_ail.c
@@ -389,6 +389,7 @@ xfsaild_resubmit_item(
 	return XFS_ITEM_SUCCESS;
 }
 
+#include <linux/delay.h>
 static inline uint
 xfsaild_push_item(
 	struct xfs_ail		*ailp,
@@ -398,6 +399,10 @@ xfsaild_push_item(
 	 * If log item pinning is enabled, skip the push and track the item as
 	 * pinned. This can help induce head-behind-tail conditions.
 	 */
+	mdelay(10000);
+	printk(KERN_ERR "sleep 10s");
+	return XFS_ITEM_LOCKED;
+
 	if (XFS_TEST_ERROR(false, ailp->ail_log->l_mp, XFS_ERRTAG_LOG_ITEM_PIN))
 		return XFS_ITEM_PINNED;
 
  1. sh test.sh,运行完成后10s内强制关闭虚拟机
#!/bin/bash

mkfs.xfs -f -d size=104857600 /dev/sda
mount /dev/sda /root/temp
xfs_growfs /dev/sda
dd if=/dev/urandom of=/root/temp/file bs=1M count=200 && sync
  1. reboot
  2. sysctl -w kernel.panic_on_warn=1 && mount /dev/sda /root/temp
[   44.606658] XFS (sda): xfs_buf_find: daddr 0x32001 out of range, EOFS 0x32000
[   44.610046] ------------[ cut here ]------------
[   44.611960] WARNING: CPU: 2 PID: 2565 at fs/xfs/xfs_buf.c:615 xfs_buf_find+0x936/0xaa0
[   44.615111] Modules linked in:
[   44.616134] CPU: 2 PID: 2565 Comm: mount Not tainted 5.10.0-02418-ga52c04ae41fc-dirty #34
[   44.618596] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014
[   44.621248] RIP: 0010:xfs_buf_find+0x936/0xaa0
[   44.622633] Code: c9 fc ff ff 48 83 05 38 96 c1 0c 01 48 89 c1 48 c7 c2 f0 4e 89 82 48 c7 c6 d8 b1 e6 82 e8 1c 0b 9a 00 48 83 05 2a 96 f
[   44.627537] RSP: 0018:ffffc900003e3888 EFLAGS: 00010202
[   44.628733] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000007fffffff
[   44.630362] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff82e2708c
[   44.631991] RBP: ffff88811199f500 R08: 0000000000001872 R09: 0000000000000000
[   44.633590] R10: 000000000000000a R11: 000000000000000a R12: ffffc900003e3900
[   44.635208] R13: ffffc900003e3958 R14: ffffc900003e39c8 R15: 0000000000000001
[   44.636502] FS:  00007fd4d1982400(0000) GS:ffff88842fd00000(0000) knlGS:0000000000000000
[   44.637906] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   44.638928] CR2: 000055a01673e788 CR3: 000000011cd52000 CR4: 00000000000006e0
[   44.640241] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[   44.641480] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[   44.642721] Call Trace:
[   44.643191]  xfs_buf_get_map+0x4b/0x390
[   44.643897]  xfs_buf_read_map+0x5a/0x360
[   44.644622]  ? xfs_buf_readahead_map+0x47/0x80
[   44.645388]  xfs_buf_readahead_map+0x6d/0x80
[   44.646146]  ? xfs_buf_readahead_map+0x47/0x80
[   44.646953]  xlog_buf_readahead+0x89/0xa0
[   44.647680]  xlog_recover_buf_ra_pass2+0x23/0x30
[   44.648541]  xlog_recover_commit_trans+0x158/0x4a0
[   44.649412]  xlog_recovery_process_trans+0xdb/0x140
[   44.650312]  xlog_recover_process_ophdr+0x9c/0x1a0
[   44.651147]  xlog_recover_process_data+0xce/0x200
[   44.652016]  xlog_recover_process+0x106/0x190
[   44.652821]  xlog_do_recovery_pass+0x453/0xac0
[   44.653633]  ? stack_trace_save+0x53/0x80
[   44.654376]  xlog_do_log_recovery+0xa7/0x100
[   44.655129]  xlog_do_recover+0x4c/0x2f0
[   44.655830]  xlog_recover+0x100/0x230
[   44.656528]  xfs_log_mount+0x375/0x460
[   44.657192]  xfs_mountfs+0x645/0xcc0
[   44.657844]  ? xfs_filestream_pick_ag+0x610/0x610
[   44.658688]  ? xfs_mru_cache_create+0x176/0x200
[   44.659503]  xfs_fc_fill_super+0x707/0xbc0
[   44.660267]  ? xfs_open_devices+0x3a0/0x3a0
[   44.661011]  get_tree_bdev+0x1d2/0x370
[   44.661691]  xfs_fc_get_tree+0x19/0x30
[   44.662383]  vfs_get_tree+0x22/0xe0
[   44.663002]  path_mount+0xb16/0xed0
[   44.663639]  do_mount+0x8d/0xc0
[   44.664270]  __se_sys_mount+0x163/0x270
[   44.664942]  __x64_sys_mount+0x29/0x40
[   44.665620]  do_syscall_64+0x45/0x70
[   44.666302]  entry_SYSCALL_64_after_hwframe+0x61/0xc6

评论 (2)

chengzhihao 创建了任务
openeuler-ci-bot 添加了
 
sig/Kernel
标签

你好,复现方法中 合入diff重编内核的目的是什么呢? 如果不加diff合入复现吗?

登录 后才可以发表评论

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

搜索帮助