3.4.4: suspend oops, resume crash
Nix <[email protected]> Mon, 25 Jun 2012 22:17:20 +0100
| Newsgroups | gmane.linux.swsusp.devel |
|---|---|
| Message-ID | <[email protected]> |
(3.4.4 derived from Nigel's 3.4.3 git merged with upstream 3.4.4.) This crash, caused by md finishing up in its reboot notifier, is still present: [ 296.177108] kernel BUG at block/blk-core.c:1704! [ 296.177141] invalid opcode: 0000 [#1] PREEMPT SMP [ 296.177173] CPU 0 [ 296.177183] Modules linked in: firewire_ohci firewire_core [last unloaded: microcode] [ 296.177230] [ 296.177239] Pid: 4109, comm: hibernate Not tainted 3.4.4-05172-gb169281-dirty #1 System manufacturer System Product Name /P6T [ 296.177301] RIP: 0010:[<ffffffff812583ee>] [<ffffffff812583ee>] submit_bio+0x33/0xf6 [ 296.177346] RSP: 0018:ffff8802b06e1b48 EFLAGS: 00010246 [ 296.177373] RAX: 0000000000000e11 RBX: ffff88032e207848 RCX: 0000000000000400 [ 296.177408] RDX: 00000000000000a8 RSI: ffff88032e207848 RDI: 0000000000000e11 [ 296.177444] RBP: ffff8802b06e1b98 R08: 0000000000000000 R09: ffff88032e207848 [ 296.177479] R10: 0000000000000002 R11: ffff88032cfba800 R12: ffff88032d453800 [ 296.177515] R13: 0000000000000008 R14: ffff88032e207848 R15: 0000000000000400 [ 296.177550] FS: 00007fb08ddd9700(0000) GS:ffff88033fc00000(0000) knlGS:0000000000000000 [ 296.177591] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 296.177619] CR2: ffffffffff600400 CR3: 00000002b6840000 CR4: 00000000000007f0 [ 296.177654] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 296.177690] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 296.177725] Process hibernate (pid: 4109, threadinfo ffff8802b06e0000, task ffff8802bb6f9660) [ 296.177766] Stack: [ 296.177777] ffffffff810ef614 ffff88032cfba800 ffff88032d453800 ffff88032cfba800 [ 296.177819] ffff88032d453800 0000000000000008 ffff88032e207848 ffff88032cfba800 [ 296.177863] ffff88032d453800 0000000000000008 ffff8802b06e1be8 ffffffff814505f6 [ 296.177970] Call Trace: [ 296.177986] [<ffffffff810ef614>] ? __lock_page+0x68/0x68 [ 296.178016] [<ffffffff814505f6>] md_super_write+0x85/0x94 [ 296.178046] [<ffffffff81450990>] md_update_sb+0x306/0x465 [ 296.178075] [<ffffffff81079491>] ? abort_exclusive_wait+0x8e/0x8e [ 296.178107] [<ffffffff814515c5>] __md_stop_writes+0x71/0x75 [ 296.178137] [<ffffffff814516e8>] md_notify_reboot+0x54/0xd7 [ 296.178168] [<ffffffff8107d87b>] notifier_call_chain+0x37/0x63 [ 296.178198] [<ffffffff8107d9b6>] __blocking_notifier_call_chain+0x4b/0x60 [ 296.178233] [<ffffffff8107d9df>] blocking_notifier_call_chain+0x14/0x16 [ 296.178268] [<ffffffff8106fa9b>] kernel_restart_prepare+0x1d/0x3d [ 296.178299] [<ffffffff8106facf>] kernel_restart+0x14/0x51 [ 296.178328] [<ffffffff81098b05>] __toi_power_down+0x5e/0x130 [ 296.178358] [<ffffffff81098e6d>] toi_power_down+0x8b/0x92 [ 296.178387] [<ffffffff810a2810>] ? memory_bm_next_pfn+0x10/0x12 [ 296.178419] [<ffffffff81092b0b>] ? map_ps2_pages+0x15/0x1c [ 296.178447] [<ffffffff8109331e>] do_toi_step+0x5c5/0x6b6 [ 296.178475] [<ffffffff81093736>] toi_try_hibernate+0x102/0x13e [ 296.179842] [<ffffffff81091f6a>] toi_main_wrapper+0xe/0x10 [ 296.181252] [<ffffffff81092184>] toi_attr_store+0x208/0x255 [ 296.182674] [<ffffffff8118baf2>] sysfs_write_file+0xf4/0x130 [ 296.184116] [<ffffffff811307f5>] vfs_write+0xb2/0x142 [ 296.185577] [<ffffffff81130a7f>] sys_write+0x4a/0x71 [ 296.187057] [<ffffffff815ae2e2>] system_call_fastpath+0x16/0x1b [ 296.188557] Code: 53 48 83 ec 38 66 66 66 66 90 48 63 c7 48 89 f3 8b 4e 30 48 0b 46 20 83 3d c7 01 aa 00 00 48 89 46 20 74 09 a9 00 00 00 20 75 02 <0f> 0b 48 85 db 0f 84 a5 00 00 00 48 83 7b 48 00 0f 84 9a 00 00 [ 296.192241] RIP [<ffffffff812583ee>] submit_bio+0x33/0xf6 [ 296.194076] RSP <ffff8802b06e1b48> [ 296.195953] ---[ end trace 261f90088192c622 ]--- Fix the same as in 3.3: Index: linux/drivers/md/md.c =================================================================== --- linux.orig/drivers/md/md.c 2012-06-25 04:43:15.793300371 +0100 +++ linux/drivers/md/md.c 2012-06-25 22:05:40.009727413 +0100 @@ -853,7 +853,7 @@ bio->bi_end_io = super_written; atomic_inc(&mddev->pending_writes); - submit_bio(WRITE_FLUSH_FUA, bio); + submit_bio(WRITE_FLUSH_FUA | REQ_TOI, bio); } void md_super_wait(struct mddev *mddev)