Turns out this looks to be the same issue, due to filesystem corruption the disk is unavailable in that Linux image that runs petitboot; so it can't be scanned to find something to boot.
Furthermore, it seems like the issues are reliably fixed by running fsck.jfs on the filesystem (even mounted), but there is no fsck.jfs available in the petitboot environment for me to test this with.
For good measure, even when I do manage to boot to disk in the absence of multipath, but using JFS as a root filesystem, I still get crashes (this one comes from 16.04):
[ 1086.975058] btstack dump:
[ 1086.975059] bn = 0, index = 0
[ 1086.975084] bn = 180009, index = 0
[ 1086.975125] bn = 0, index = 0
[ 1086.975151] bn = 180009, index = 0
[ 1086.975177] bn = 0, index = 0
[ 1086.975204] bn = 180009, index = 0
[ 1086.975231] bn = 0, index = 0
[ 1086.975259] bn = c0000000fd107c80, index = -1360
[ 1086.975529] ERROR: (device sda2): dtSearch [jfs]: DT_GETPAGE: dtree page corrupt
I think it's been sufficiently established this is a kernel bug present in at the very least in 16.04, with kernel 4.4.0-92.115, but also on artful with the most recent kernel.
This bug needs to go to the kernel team, I don't think there's a d-i bug at all.
Turns out this looks to be the same issue, due to filesystem corruption the disk is unavailable in that Linux image that runs petitboot; so it can't be scanned to find something to boot.
Furthermore, it seems like the issues are reliably fixed by running fsck.jfs on the filesystem (even mounted), but there is no fsck.jfs available in the petitboot environment for me to test this with.
For good measure, even when I do manage to boot to disk in the absence of multipath, but using JFS as a root filesystem, I still get crashes (this one comes from 16.04):
[ 71.761950] BUG: Bad page state in process jfsCommit pfn:77280 dca000 count:0 mapcount:0 mapping: (null) index:0x15008 d(locked| referenced| uptodate| private) CHECK_AT_ FREE flag(s) set private) 0xb0/0xf0 (unreliable) part.10+ 0x114/0x170 prepare+ 0x424/0x4a0 cold_page+ 0x60/0x210 0x278/0x330 [jfs] 0x1e8/0x3b0 [jfs] kernel_ thread+ 0x5c/0xa4 dca000 count:0 mapcount:0 mapping: (null) index:0x15008 c(referenced| uptodate| dirty|private) CHECK_AT_ FREE flag(s) set 0xb0/0xf0 (unreliable) part.10+ 0x114/0x170 prepare+ 0x424/0x4a0 cold_page+ 0x60/0x210 metapage+ 0xfc/0x2c0 [jfs] 0xb8/0x250 [jfs] 0x14c/0x330 [jfs] 0x1e8/0x3b0 [jfs] kernel_ thread+ 0x5c/0xa4
[ 71.762035] page:f000000001
[ 71.762115] flags: 0x3ffff80000080
[ 71.762225] page dumped because: PAGE_FLAGS_
[ 71.762293] bad because of flags:
[ 71.762334] flags: 0x801(locked|
[ 71.762402] Modules linked in: vmx_crypto rtc_generic autofs4 jfs ibmveth ibmvscsi
[ 71.762415] CPU: 5 PID: 1723 Comm: jfsCommit Not tainted 4.4.0-92-generic #115-Ubuntu
[ 71.762418] Call Trace:
[ 71.762431] [c0000007704b3a40] [c000000000b18f28] dump_stack+
[ 71.762437] [c0000007704b3a80] [c000000000234d34] bad_page.
[ 71.762440] [c0000007704b3b10] [c0000000002355b4] free_pages_
[ 71.762443] [c0000007704b3b90] [c000000000238980] free_hot_
[ 71.762447] [c0000007704b3be0] [c000000000245058] put_page+0x78/0xb0
[ 71.762455] [c0000007704b3c10] [d000000003b02668] txUnlock+
[ 71.762461] [c0000007704b3cd0] [d000000003b06208] jfs_lazycommit+
[ 71.762466] [c0000007704b3d80] [c0000000000e7354] kthread+0x124/0x150
[ 71.762471] [c0000007704b3e30] [c000000000009538] ret_from_
[ 71.762474] Disabling lock debugging due to kernel taint
[ 71.762477] BUG: Bad page state in process jfsCommit pfn:77280
[ 71.762541] page:f000000001
[ 71.762623] flags: 0x3ffff80000081
[ 71.762737] page dumped because: PAGE_FLAGS_
[ 71.762806] bad because of flags:
[ 71.762853] flags: 0x800(private)
[ 71.762910] Modules linked in: vmx_crypto rtc_generic autofs4 jfs ibmveth ibmvscsi
[ 71.762918] CPU: 5 PID: 1723 Comm: jfsCommit Tainted: G B 4.4.0-92-generic #115-Ubuntu
[ 71.762919] Call Trace:
[ 71.762923] [c0000007704b3940] [c000000000b18f28] dump_stack+
[ 71.762927] [c0000007704b3980] [c000000000234d34] bad_page.
[ 71.762930] [c0000007704b3a10] [c0000000002355b4] free_pages_
[ 71.762933] [c0000007704b3a90] [c000000000238980] free_hot_
[ 71.762936] [c0000007704b3ae0] [c000000000245058] put_page+0x78/0xb0
[ 71.762942] [c0000007704b3b10] [d000000003afde2c] release_
[ 71.762948] [c0000007704b3b90] [d000000003afe6f8] put_metapage+
[ 71.762954] [c0000007704b3c10] [d000000003b0253c] txUnlock+
[ 71.762960] [c0000007704b3cd0] [d000000003b06208] jfs_lazycommit+
[ 71.762963] [c0000007704b3d80] [c0000000000e7354] kthread+0x124/0x150
[ 71.762967] [c0000007704b3e30] [c000000000009538] ret_from_
[ 939.941389] ERROR: (device sda2): diRead [jfs]: i_ino != di_number
[ 1086.974949] ERROR: (device sda2): dtSearch [jfs]: stack overrun!
[ 1086.975058] btstack dump:
[ 1086.975059] bn = 0, index = 0
[ 1086.975084] bn = 180009, index = 0
[ 1086.975125] bn = 0, index = 0
[ 1086.975151] bn = 180009, index = 0
[ 1086.975177] bn = 0, index = 0
[ 1086.975204] bn = 180009, index = 0
[ 1086.975231] bn = 0, index = 0
[ 1086.975259] bn = c0000000fd107c80, index = -1360
[ 1086.975529] ERROR: (device sda2): dtSearch [jfs]: DT_GETPAGE: dtree page corrupt
I think it's been sufficiently established this is a kernel bug present in at the very least in 16.04, with kernel 4.4.0-92.115, but also on artful with the most recent kernel.
This bug needs to go to the kernel team, I don't think there's a d-i bug at all.