bcachefs: Make sure trans is unlocked when submitting read IO
We were still using the trans after the unlock, leading to this bug in
the retry path:
00255 ------------[ cut here ]------------
00255 kernel BUG at fs/bcachefs/btree_iter.c:3348!
00255 Internal error: Oops - BUG:
00000000f2000800 [#1] SMP
00255 bcachefs (
0ca38fe8-0a26-41f9-9b5d-
6a27796c7803): /fiotest offset
86048768: no device to read from:
00255 u64s 8 type extent 4098:168192:U32_MAX len 128 ver 0: durability: 0 crc: c_size 128 size 128 offset 0 nonce 0 csum crc32c 0:
8040a368 compress none ec: idx 83 block 1 ptr: 0:302:128 gen 0
00255 bcachefs (
0ca38fe8-0a26-41f9-9b5d-
6a27796c7803): /fiotest offset
85983232: no device to read from:
00255 u64s 8 type extent 4098:168064:U32_MAX len 128 ver 0: durability: 0 crc: c_size 128 size 128 offset 0 nonce 0 csum crc32c 0:
43311336 compress none ec: idx 83 block 1 ptr: 0:302:0 gen 0
00255 Modules linked in:
00255 CPU: 5 UID: 0 PID: 304 Comm: kworker/u70:2 Not tainted
6.14.0-rc6-ktest-g526aae23d67d #16040
00255 Hardware name: linux,dummy-virt (DT)
00255 Workqueue: events_unbound bch2_rbio_retry
00255 pstate:
60001005 (nZCv daif -PAN -UAO -TCO -DIT +SSBS BTYPE=--)
00255 pc : __bch2_trans_get+0x100/0x378
00255 lr : __bch2_trans_get+0xa0/0x378
00255 sp :
ffffff80c865b760
00255 x29:
ffffff80c865b760 x28:
0000000000000000 x27:
ffffff80d76ed880
00255 x26:
0000000000000018 x25:
0000000000000000 x24:
ffffff80f4ec3760
00255 x23:
ffffff80f4010140 x22:
0000000000000056 x21:
ffffff80f4ec0000
00255 x20:
ffffff80f4ec3788 x19:
ffffff80d75f8000 x18:
00000000ffffffff
00255 x17:
2065707974203820 x16:
7334367520200a3a x15:
0000000000000008
00255 x14:
0000000000000001 x13:
0000000000000100 x12:
0000000000000006
00255 x11:
ffffffc080b47a40 x10:
0000000000000000 x9 :
ffffffc08038dea8
00255 x8 :
ffffff80d75fc018 x7 :
0000000000000000 x6 :
0000000000003788
00255 x5 :
0000000000003760 x4 :
ffffff80c922de80 x3 :
ffffff80f18f0000
00255 x2 :
ffffff80c922de80 x1 :
0000000000000130 x0 :
0000000000000006
00255 Call trace:
00255 __bch2_trans_get+0x100/0x378 (P)
00255 bch2_read_io_err+0x98/0x260
00255 bch2_read_endio+0xb8/0x2d0
00255 __bch2_read_extent+0xce8/0xfe0
00255 __bch2_read+0x2a8/0x978
00255 bch2_rbio_retry+0x188/0x318
00255 process_one_work+0x154/0x390
00255 worker_thread+0x20c/0x3b8
00255 kthread+0xf0/0x1b0
00255 ret_from_fork+0x10/0x20
00255 Code:
6b01001f 54ffff01 79408460 3617fec0 (
d4210000)
00255 ---[ end trace
0000000000000000 ]---
00255 Kernel panic - not syncing: Oops - BUG: Fatal exception
00255 SMP: stopping secondary CPUs
00255 Kernel Offset: disabled
00255 CPU features: 0x000,
00000070,
00000010,
8240500b
00255 Memory Limit: none
00255 ---[ end Kernel panic - not syncing: Oops - BUG: Fatal exception ]---
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>