• Junxiao Bi's avatar
    ocfs2: fix ocfs2 read block panic · 1e0be238
    Junxiao Bi authored
    commit 234b69e3 upstream.
    
    While reading block, it is possible that io error return due to underlying
    storage issue, in this case, BH_NeedsValidate was left in the buffer head.
    Then when reading the very block next time, if it was already linked into
    journal, that will trigger the following panic.
    
    [203748.702517] kernel BUG at fs/ocfs2/buffer_head_io.c:342!
    [203748.702533] invalid opcode: 0000 [#1] SMP
    [203748.702561] Modules linked in: ocfs2 ocfs2_dlmfs ocfs2_stack_o2cb ocfs2_dlm ocfs2_nodemanager ocfs2_stackglue configfs sunrpc dm_switch dm_queue_length dm_multipath bonding be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb4i iw_cxgb4 cxgb4 cxgb3i libcxgbi iw_cxgb3 cxgb3 mdio ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr ipv6 iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi ipmi_devintf iTCO_wdt iTCO_vendor_support dcdbas ipmi_ssif i2c_core ipmi_si ipmi_msghandler acpi_pad pcspkr sb_edac edac_core lpc_ich mfd_core shpchp sg tg3 ptp pps_core ext4 jbd2 mbcache2 sr_mod cdrom sd_mod ahci libahci megaraid_sas wmi dm_mirror dm_region_hash dm_log dm_mod
    [203748.703024] CPU: 7 PID: 38369 Comm: touch Not tainted 4.1.12-124.18.6.el6uek.x86_64 #2
    [203748.703045] Hardware name: Dell Inc. PowerEdge R620/0PXXHP, BIOS 2.5.2 01/28/2015
    [203748.703067] task: ffff880768139c00 ti: ffff88006ff48000 task.ti: ffff88006ff48000
    [203748.703088] RIP: 0010:[<ffffffffa05e9f09>]  [<ffffffffa05e9f09>] ocfs2_read_blocks+0x669/0x7f0 [ocfs2]
    [203748.703130] RSP: 0018:ffff88006ff4b818  EFLAGS: 00010206
    [203748.703389] RAX: 0000000008620029 RBX: ffff88006ff4b910 RCX: 0000000000000000
    [203748.703885] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 00000000023079fe
    [203748.704382] RBP: ffff88006ff4b8d8 R08: 0000000000000000 R09: ffff8807578c25b0
    [203748.704877] R10: 000000000f637376 R11: 000000003030322e R12: 0000000000000000
    [203748.705373] R13: ffff88006ff4b910 R14: ffff880732fe38f0 R15: 0000000000000000
    [203748.705871] FS:  00007f401992c700(0000) GS:ffff880bfebc0000(0000) knlGS:0000000000000000
    [203748.706370] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [203748.706627] CR2: 00007f4019252440 CR3: 00000000a621e000 CR4: 0000000000060670
    [203748.707124] Stack:
    [203748.707371]  ffff88006ff4b828 ffffffffa0609f52 ffff88006ff4b838 0000000000000001
    [203748.707885]  0000000000000000 0000000000000000 ffff880bf67c3800 ffffffffa05eca00
    [203748.708399]  00000000023079ff ffffffff81c58b80 0000000000000000 0000000000000000
    [203748.708915] Call Trace:
    [203748.709175]  [<ffffffffa0609f52>] ? ocfs2_inode_cache_io_unlock+0x12/0x20 [ocfs2]
    [203748.709680]  [<ffffffffa05eca00>] ? ocfs2_empty_dir_filldir+0x80/0x80 [ocfs2]
    [203748.710185]  [<ffffffffa05ec0cb>] ocfs2_read_dir_block_direct+0x3b/0x200 [ocfs2]
    [203748.710691]  [<ffffffffa05f0fbf>] ocfs2_prepare_dx_dir_for_insert.isra.57+0x19f/0xf60 [ocfs2]
    [203748.711204]  [<ffffffffa065660f>] ? ocfs2_metadata_cache_io_unlock+0x1f/0x30 [ocfs2]
    [203748.711716]  [<ffffffffa05f4f3a>] ocfs2_prepare_dir_for_insert+0x13a/0x890 [ocfs2]
    [203748.712227]  [<ffffffffa05f442e>] ? ocfs2_check_dir_for_entry+0x8e/0x140 [ocfs2]
    [203748.712737]  [<ffffffffa061b2f2>] ocfs2_mknod+0x4b2/0x1370 [ocfs2]
    [203748.713003]  [<ffffffffa061c385>] ocfs2_create+0x65/0x170 [ocfs2]
    [203748.713263]  [<ffffffff8121714b>] vfs_create+0xdb/0x150
    [203748.713518]  [<ffffffff8121b225>] do_last+0x815/0x1210
    [203748.713772]  [<ffffffff812192e9>] ? path_init+0xb9/0x450
    [203748.714123]  [<ffffffff8121bca0>] path_openat+0x80/0x600
    [203748.714378]  [<ffffffff811bcd45>] ? handle_pte_fault+0xd15/0x1620
    [203748.714634]  [<ffffffff8121d7ba>] do_filp_open+0x3a/0xb0
    [203748.714888]  [<ffffffff8122a767>] ? __alloc_fd+0xa7/0x130
    [203748.715143]  [<ffffffff81209ffc>] do_sys_open+0x12c/0x220
    [203748.715403]  [<ffffffff81026ddb>] ? syscall_trace_enter_phase1+0x11b/0x180
    [203748.715668]  [<ffffffff816f0c9f>] ? system_call_after_swapgs+0xe9/0x190
    [203748.715928]  [<ffffffff8120a10e>] SyS_open+0x1e/0x20
    [203748.716184]  [<ffffffff816f0d5e>] system_call_fastpath+0x18/0xd7
    [203748.716440] Code: 00 00 48 8b 7b 08 48 83 c3 10 45 89 f8 44 89 e1 44 89 f2 4c 89 ee e8 07 06 11 e1 48 8b 03 48 85 c0 75 df 8b 5d c8 e9 4d fa ff ff <0f> 0b 48 8b 7d a0 e8 dc c6 06 00 48 b8 00 00 00 00 00 00 00 10
    [203748.717505] RIP  [<ffffffffa05e9f09>] ocfs2_read_blocks+0x669/0x7f0 [ocfs2]
    [203748.717775]  RSP <ffff88006ff4b818>
    
    Joesph ever reported a similar panic.
    Link: https://oss.oracle.com/pipermail/ocfs2-devel/2013-May/008931.html
    
    Link: http://lkml.kernel.org/r/20180912063207.29484-1-junxiao.bi@oracle.comSigned-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Changwei Ge <ge.changwei@h3c.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    1e0be238
Name
Last commit
Last update
..
cluster Loading commit data...
dlm Loading commit data...
dlmfs Loading commit data...
Kconfig Loading commit data...
Makefile Loading commit data...
acl.c Loading commit data...
acl.h Loading commit data...
alloc.c Loading commit data...
alloc.h Loading commit data...
aops.c Loading commit data...
aops.h Loading commit data...
blockcheck.c Loading commit data...
blockcheck.h Loading commit data...
buffer_head_io.c Loading commit data...
buffer_head_io.h Loading commit data...
dcache.c Loading commit data...
dcache.h Loading commit data...
dir.c Loading commit data...
dir.h Loading commit data...
dlmglue.c Loading commit data...
dlmglue.h Loading commit data...
export.c Loading commit data...
export.h Loading commit data...
extent_map.c Loading commit data...
extent_map.h Loading commit data...
file.c Loading commit data...
file.h Loading commit data...
filecheck.c Loading commit data...
filecheck.h Loading commit data...
heartbeat.c Loading commit data...
heartbeat.h Loading commit data...
inode.c Loading commit data...
inode.h Loading commit data...
ioctl.c Loading commit data...
ioctl.h Loading commit data...
journal.c Loading commit data...
journal.h Loading commit data...
localalloc.c Loading commit data...
localalloc.h Loading commit data...
locks.c Loading commit data...
locks.h Loading commit data...
mmap.c Loading commit data...
mmap.h Loading commit data...
move_extents.c Loading commit data...
move_extents.h Loading commit data...
namei.c Loading commit data...
namei.h Loading commit data...
ocfs1_fs_compat.h Loading commit data...
ocfs2.h Loading commit data...
ocfs2_fs.h Loading commit data...
ocfs2_ioctl.h Loading commit data...
ocfs2_lockid.h Loading commit data...
ocfs2_lockingver.h Loading commit data...
ocfs2_trace.h Loading commit data...
quota.h Loading commit data...
quota_global.c Loading commit data...
quota_local.c Loading commit data...
refcounttree.c Loading commit data...
refcounttree.h Loading commit data...
reservations.c Loading commit data...
reservations.h Loading commit data...
resize.c Loading commit data...
resize.h Loading commit data...
slot_map.c Loading commit data...
slot_map.h Loading commit data...
stack_o2cb.c Loading commit data...
stack_user.c Loading commit data...
stackglue.c Loading commit data...
stackglue.h Loading commit data...
suballoc.c Loading commit data...
suballoc.h Loading commit data...
super.c Loading commit data...
super.h Loading commit data...
symlink.c Loading commit data...
symlink.h Loading commit data...
sysfile.c Loading commit data...
sysfile.h Loading commit data...
uptodate.c Loading commit data...
uptodate.h Loading commit data...
xattr.c Loading commit data...
xattr.h Loading commit data...