linux-bcache.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Kernel Oops: kernel BUG at block/bio.c:52
@ 2021-04-20 14:54 Victor Westerhuis
  2021-04-20 16:14 ` Coly Li
  0 siblings, 1 reply; 7+ messages in thread
From: Victor Westerhuis @ 2021-04-20 14:54 UTC (permalink / raw)
  To: linux-bcache

Hi all!

Today I tried using bcache for the first time, but after a few minutes
all accesses to my new bcache filesystem started hanging.

Looking in dmesg I found the following Oops:
[  533.649096] kernel BUG at block/bio.c:52!
[  533.649107] invalid opcode: 0000 [#1] SMP PTI
[  533.649111] CPU: 3 PID: 1161 Comm: transmission-qt Not tainted 
5.12.0-rc8-personal #1
[  533.649115] Hardware name: LENOVO 20354/Lancer 5A5, BIOS 9BCN91WW 
07/21/2015
[  533.649117] RIP: 0010:biovec_slab.part.0+0x5/0x10
[  533.649128] Code: 82 00 48 8b 7b f0 48 85 ff 74 e1 48 8b 07 48 89 43 
f0 48 85 c0 75 ce 48 c7 43 f8 00 00 00 00 eb c4 5b 5d c3 90 0f 1f 44 00 
00 <0f> 0b 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 83 7f 40 00 75
[  533.649132] RSP: 0018:ffffbc0cc3337950 EFLAGS: 00010206
[  533.649136] RAX: 000000000000017f RBX: ffffbc0cc3337984 RCX: 
0000000000000100
[  533.649139] RDX: 0000000000000800 RSI: ffffbc0cc3337984 RDI: 
ffffa015d5300118
[  533.649141] RBP: 0000000000000800 R08: ffffa015d5300118 R09: 
ffffa015222d8d00
[  533.649143] R10: ffffa015d47d38f0 R11: 9000000002800000 R12: 
ffffa015d5300118
[  533.649145] R13: 0000000000000800 R14: ffffa015d53000d0 R15: 
0000000000000800
[  533.649148] FS:  00007f68dab79700(0000) GS:ffffa01707380000(0000) 
knlGS:0000000000000000
[  533.649151] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  533.649153] CR2: 00007f84340df020 CR3: 0000000145538006 CR4: 
00000000001706e0
[  533.649155] Call Trace:
[  533.649158]  bvec_alloc+0x90/0xc0
[  533.649166]  bio_alloc_bioset+0x130/0x1d0
[  533.649172]  cached_dev_cache_miss+0x100/0x300 [bcache]
[  533.649202]  cache_lookup_fn+0x119/0x300 [bcache]
[  533.649222]  ? bch_btree_iter_next_filter+0x1b0/0x2c0 [bcache]
[  533.649239]  ? bch_data_invalidate+0x160/0x160 [bcache]
[  533.649258]  bch_btree_map_keys_recurse+0x7e/0x180 [bcache]
[  533.649277]  ? mempool_alloc+0x62/0x170
[  533.649283]  bch_btree_map_keys+0x15c/0x1b0 [bcache]
[  533.649301]  ? bch_data_invalidate+0x160/0x160 [bcache]
[  533.649321]  cache_lookup+0x8a/0x140 [bcache]
[  533.649340]  cached_dev_submit_bio+0x964/0xc90 [bcache]
[  533.649361]  ? submit_bio_checks+0x1a2/0x570
[  533.649366]  ? mempool_alloc+0x62/0x170
[  533.649371]  submit_bio_noacct+0x122/0x4f0
[  533.649376]  ext4_mpage_readpages+0x1e0/0x8d0 [ext4]
[  533.649420]  ? __mod_memcg_lruvec_state+0x22/0xe0
[  533.649424]  ? __add_to_page_cache_locked+0x18f/0x370
[  533.649429]  read_pages+0x82/0x1e0
[  533.649433]  page_cache_ra_unbounded+0x197/0x1e0
[  533.649438]  force_page_cache_ra+0xda/0x140
[  533.649442]  generic_fadvise+0x190/0x280
[  533.649448]  __x64_sys_fadvise64+0x7c/0x90
[  533.649453]  do_syscall_64+0x33/0x40
[  533.649458]  entry_SYSCALL_64_after_hwframe+0x44/0xae
[  533.649463] RIP: 0033:0x7f68eeab954a
[  533.649467] Code: ff eb 80 0f 1f 44 00 00 48 8b 15 41 a9 0c 00 f7 d8 
64 89 02 b8 ff ff ff ff eb c3 e8 e0 a0 01 00 41 89 ca b8 dd 00 00 00 0f 
05 <89> c2 f7 da 3d 00 f0 ff ff b8 00 00 00 00 0f 47 c2 c3 0f 1f 40 00
[  533.649470] RSP: 002b:00007f68dab787f8 EFLAGS: 00000246 ORIG_RAX: 
00000000000000dd
[  533.649474] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 
00007f68eeab954a
[  533.649477] RDX: 0000000000800000 RSI: 0000000038ff17a8 RDI: 
0000000000000028
[  533.649479] RBP: 0000000000000000 R08: 0000000000000003 R09: 
0000000000000003
[  533.649481] R10: 0000000000000003 R11: 0000000000000246 R12: 
0000000000000001
[  533.649483] R13: 0000000000000001 R14: 00007f68c434aaf8 R15: 
00007f68c42dd950
[  533.649488] Modules linked in: des_generic libdes sha1_ssse3 
sha1_generic md5 md4 bcache crc64 hid_generic usbhid ext4 crc32c_generic 
mbcache jbd2 pkcs8_key_parser fuse
[  533.649506] ---[ end trace 4d34ff6f2d05924c ]---
[  533.649509] RIP: 0010:biovec_slab.part.0+0x5/0x10
[  533.649515] Code: 82 00 48 8b 7b f0 48 85 ff 74 e1 48 8b 07 48 89 43 
f0 48 85 c0 75 ce 48 c7 43 f8 00 00 00 00 eb c4 5b 5d c3 90 0f 1f 44 00 
00 <0f> 0b 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 83 7f 40 00 75
[  533.649518] RSP: 0018:ffffbc0cc3337950 EFLAGS: 00010206
[  533.649522] RAX: 000000000000017f RBX: ffffbc0cc3337984 RCX: 
0000000000000100
[  533.649524] RDX: 0000000000000800 RSI: ffffbc0cc3337984 RDI: 
ffffa015d5300118
[  533.649526] RBP: 0000000000000800 R08: ffffa015d5300118 R09: 
ffffa015222d8d00
[  533.649528] R10: ffffa015d47d38f0 R11: 9000000002800000 R12: 
ffffa015d5300118
[  533.649531] R13: 0000000000000800 R14: ffffa015d53000d0 R15: 
0000000000000800
[  533.649533] FS:  00007f68dab79700(0000) GS:ffffa01707380000(0000) 
knlGS:0000000000000000
[  533.649536] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  533.649539] CR2: 00007f84340df020 CR3: 0000000145538006 CR4: 
00000000001706e0

I've traced the error back to  drivers/md/bcache/request.c:919, but I
don't know the code well enough to trace it any further. It appears to
me that bcache tries to allocate an invalid amount of memory, but like
I said, I'm not sure what is going on exactly.

The problem hasn't appeared yet when running 5.11.15.

Regards,


Victor Westerhuis

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Kernel Oops: kernel BUG at block/bio.c:52
  2021-04-20 14:54 Kernel Oops: kernel BUG at block/bio.c:52 Victor Westerhuis
@ 2021-04-20 16:14 ` Coly Li
  2021-04-27 18:57   ` Marco Rebhan
  0 siblings, 1 reply; 7+ messages in thread
From: Coly Li @ 2021-04-20 16:14 UTC (permalink / raw)
  To: Victor Westerhuis; +Cc: linux-bcache

On 4/20/21 10:54 PM, Victor Westerhuis wrote:
> Hi all!
> 
> Today I tried using bcache for the first time, but after a few minutes
> all accesses to my new bcache filesystem started hanging.
> 
> Looking in dmesg I found the following Oops:
> [  533.649096] kernel BUG at block/bio.c:52!
> [  533.649107] invalid opcode: 0000 [#1] SMP PTI
> [  533.649111] CPU: 3 PID: 1161 Comm: transmission-qt Not tainted
> 5.12.0-rc8-personal #1
> [  533.649115] Hardware name: LENOVO 20354/Lancer 5A5, BIOS 9BCN91WW
> 07/21/2015
> [  533.649117] RIP: 0010:biovec_slab.part.0+0x5/0x10
> [  533.649128] Code: 82 00 48 8b 7b f0 48 85 ff 74 e1 48 8b 07 48 89 43
> f0 48 85 c0 75 ce 48 c7 43 f8 00 00 00 00 eb c4 5b 5d c3 90 0f 1f 44 00
> 00 <0f> 0b 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 83 7f 40 00 75
> [  533.649132] RSP: 0018:ffffbc0cc3337950 EFLAGS: 00010206
> [  533.649136] RAX: 000000000000017f RBX: ffffbc0cc3337984 RCX:
> 0000000000000100
> [  533.649139] RDX: 0000000000000800 RSI: ffffbc0cc3337984 RDI:
> ffffa015d5300118
> [  533.649141] RBP: 0000000000000800 R08: ffffa015d5300118 R09:
> ffffa015222d8d00
> [  533.649143] R10: ffffa015d47d38f0 R11: 9000000002800000 R12:
> ffffa015d5300118
> [  533.649145] R13: 0000000000000800 R14: ffffa015d53000d0 R15:
> 0000000000000800
> [  533.649148] FS:  00007f68dab79700(0000) GS:ffffa01707380000(0000)
> knlGS:0000000000000000
> [  533.649151] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  533.649153] CR2: 00007f84340df020 CR3: 0000000145538006 CR4:
> 00000000001706e0
> [  533.649155] Call Trace:
> [  533.649158]  bvec_alloc+0x90/0xc0
> [  533.649166]  bio_alloc_bioset+0x130/0x1d0
> [  533.649172]  cached_dev_cache_miss+0x100/0x300 [bcache]
> [  533.649202]  cache_lookup_fn+0x119/0x300 [bcache]
> [  533.649222]  ? bch_btree_iter_next_filter+0x1b0/0x2c0 [bcache]
> [  533.649239]  ? bch_data_invalidate+0x160/0x160 [bcache]
> [  533.649258]  bch_btree_map_keys_recurse+0x7e/0x180 [bcache]
> [  533.649277]  ? mempool_alloc+0x62/0x170
> [  533.649283]  bch_btree_map_keys+0x15c/0x1b0 [bcache]
> [  533.649301]  ? bch_data_invalidate+0x160/0x160 [bcache]
> [  533.649321]  cache_lookup+0x8a/0x140 [bcache]
> [  533.649340]  cached_dev_submit_bio+0x964/0xc90 [bcache]
> [  533.649361]  ? submit_bio_checks+0x1a2/0x570
> [  533.649366]  ? mempool_alloc+0x62/0x170
> [  533.649371]  submit_bio_noacct+0x122/0x4f0
> [  533.649376]  ext4_mpage_readpages+0x1e0/0x8d0 [ext4]
> [  533.649420]  ? __mod_memcg_lruvec_state+0x22/0xe0
> [  533.649424]  ? __add_to_page_cache_locked+0x18f/0x370
> [  533.649429]  read_pages+0x82/0x1e0
> [  533.649433]  page_cache_ra_unbounded+0x197/0x1e0
> [  533.649438]  force_page_cache_ra+0xda/0x140
> [  533.649442]  generic_fadvise+0x190/0x280
> [  533.649448]  __x64_sys_fadvise64+0x7c/0x90
> [  533.649453]  do_syscall_64+0x33/0x40
> [  533.649458]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [  533.649463] RIP: 0033:0x7f68eeab954a
> [  533.649467] Code: ff eb 80 0f 1f 44 00 00 48 8b 15 41 a9 0c 00 f7 d8
> 64 89 02 b8 ff ff ff ff eb c3 e8 e0 a0 01 00 41 89 ca b8 dd 00 00 00 0f
> 05 <89> c2 f7 da 3d 00 f0 ff ff b8 00 00 00 00 0f 47 c2 c3 0f 1f 40 00
> [  533.649470] RSP: 002b:00007f68dab787f8 EFLAGS: 00000246 ORIG_RAX:
> 00000000000000dd
> [  533.649474] RAX: ffffffffffffffda RBX: 0000000000000000 RCX:
> 00007f68eeab954a
> [  533.649477] RDX: 0000000000800000 RSI: 0000000038ff17a8 RDI:
> 0000000000000028
> [  533.649479] RBP: 0000000000000000 R08: 0000000000000003 R09:
> 0000000000000003
> [  533.649481] R10: 0000000000000003 R11: 0000000000000246 R12:
> 0000000000000001
> [  533.649483] R13: 0000000000000001 R14: 00007f68c434aaf8 R15:
> 00007f68c42dd950
> [  533.649488] Modules linked in: des_generic libdes sha1_ssse3
> sha1_generic md5 md4 bcache crc64 hid_generic usbhid ext4 crc32c_generic
> mbcache jbd2 pkcs8_key_parser fuse
> [  533.649506] ---[ end trace 4d34ff6f2d05924c ]---
> [  533.649509] RIP: 0010:biovec_slab.part.0+0x5/0x10
> [  533.649515] Code: 82 00 48 8b 7b f0 48 85 ff 74 e1 48 8b 07 48 89 43
> f0 48 85 c0 75 ce 48 c7 43 f8 00 00 00 00 eb c4 5b 5d c3 90 0f 1f 44 00
> 00 <0f> 0b 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 83 7f 40 00 75
> [  533.649518] RSP: 0018:ffffbc0cc3337950 EFLAGS: 00010206
> [  533.649522] RAX: 000000000000017f RBX: ffffbc0cc3337984 RCX:
> 0000000000000100
> [  533.649524] RDX: 0000000000000800 RSI: ffffbc0cc3337984 RDI:
> ffffa015d5300118
> [  533.649526] RBP: 0000000000000800 R08: ffffa015d5300118 R09:
> ffffa015222d8d00
> [  533.649528] R10: ffffa015d47d38f0 R11: 9000000002800000 R12:
> ffffa015d5300118
> [  533.649531] R13: 0000000000000800 R14: ffffa015d53000d0 R15:
> 0000000000000800
> [  533.649533] FS:  00007f68dab79700(0000) GS:ffffa01707380000(0000)
> knlGS:0000000000000000
> [  533.649536] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  533.649539] CR2: 00007f84340df020 CR3: 0000000145538006 CR4:
> 00000000001706e0
> 
> I've traced the error back to  drivers/md/bcache/request.c:919, but I
> don't know the code well enough to trace it any further. It appears to
> me that bcache tries to allocate an invalid amount of memory, but like
> I said, I'm not sure what is going on exactly.
> 
> The problem hasn't appeared yet when running 5.11.15.

Could you please help to apply a debug patch and gather some debug
information when it reproduces ?

Thanks.

Coly Li

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Kernel Oops: kernel BUG at block/bio.c:52
  2021-04-20 16:14 ` Coly Li
@ 2021-04-27 18:57   ` Marco Rebhan
  2021-05-06  2:50     ` Coly Li
  0 siblings, 1 reply; 7+ messages in thread
From: Marco Rebhan @ 2021-04-27 18:57 UTC (permalink / raw)
  To: colyli; +Cc: linux-bcache, victor

[-- Attachment #1: Type: text/plain, Size: 320 bytes --]

Hi,

I'm getting the same issue on kernel 5.12.0 after upgrading from 
5.11.16. For me, so far the error always occurs a short while after 
boot.

> Could you please help to apply a debug patch and gather some debug 
> information when it reproduces ?

I could do that as well, which patch should I apply?

Thanks,
Marco

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Kernel Oops: kernel BUG at block/bio.c:52
  2021-04-27 18:57   ` Marco Rebhan
@ 2021-05-06  2:50     ` Coly Li
  2021-05-06  7:36       ` Marco Rebhan
  0 siblings, 1 reply; 7+ messages in thread
From: Coly Li @ 2021-05-06  2:50 UTC (permalink / raw)
  To: Marco Rebhan; +Cc: linux-bcache, victor

[-- Attachment #1: Type: text/plain, Size: 558 bytes --]

On 4/28/21 2:57 AM, Marco Rebhan wrote:
> Hi,
> 
> I'm getting the same issue on kernel 5.12.0 after upgrading from 
> 5.11.16. For me, so far the error always occurs a short while after 
> boot.
> 
>> Could you please help to apply a debug patch and gather some debug 
>> information when it reproduces ?
> 
> I could do that as well, which patch should I apply?

Could you please try the attached patch ?  If a suspicious bio
allocation happens, this patch will print out a warning kernel message
and avoid the BUG() panic.

Thank you in advance.

Coly Li

[-- Attachment #2: 0001-bcache-avoid-oversized-bio_alloc_bioset-call-in-cach.patch --]
[-- Type: text/plain, Size: 2265 bytes --]

From 6f2edee7100efabf2ccccb84e4a92ccbfbddd8c5 Mon Sep 17 00:00:00 2001
From: Coly Li <colyli@suse.de>
Date: Thu, 6 May 2021 10:38:41 +0800
Subject: [PATCH] bcache: avoid oversized bio_alloc_bioset() call in
 cached_dev_cache_miss()

Since Linux v5.12, calling bio_alloc_bioset() with oversized bio vectors
number will cause a BUG() panic in biovec_slab(). There are 2 locations
in bcache code calling bio_alloc_bioset(), and only the location in
cached_dev_cache_miss() has such potential oversized risk.

In cached_dev_cache_miss() the bio vectors number is calculated by
DIV_ROUND_UP(s->insert_bio_sectors, PAGE_SECTORS), this patch checks the
calculated result, if it is larger than BIO_MAX_VECS, then give up the
allocation of cache_bio and sending request to backing device directly.

By this restriction, the potential BUG() panic can be avoided from the
cache missing code path.

Signed-off-by: Coly Li <colyli@suse.de>
---
 drivers/md/bcache/request.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/md/bcache/request.c b/drivers/md/bcache/request.c
index 29c231758293..a657d3a2b624 100644
--- a/drivers/md/bcache/request.c
+++ b/drivers/md/bcache/request.c
@@ -879,7 +879,7 @@ static void cached_dev_read_done_bh(struct closure *cl)
 static int cached_dev_cache_miss(struct btree *b, struct search *s,
 				 struct bio *bio, unsigned int sectors)
 {
-	int ret = MAP_CONTINUE;
+	int ret = MAP_CONTINUE, nr_iovecs = 0;
 	unsigned int reada = 0;
 	struct cached_dev *dc = container_of(s->d, struct cached_dev, disk);
 	struct bio *miss, *cache_bio;
@@ -916,9 +916,14 @@ static int cached_dev_cache_miss(struct btree *b, struct search *s,
 	/* btree_search_recurse()'s btree iterator is no good anymore */
 	ret = miss == bio ? MAP_DONE : -EINTR;
 
-	cache_bio = bio_alloc_bioset(GFP_NOWAIT,
-			DIV_ROUND_UP(s->insert_bio_sectors, PAGE_SECTORS),
-			&dc->disk.bio_split);
+	nr_iovecs = DIV_ROUND_UP(s->insert_bio_sectors, PAGE_SECTORS);
+	if (nr_iovecs > BIO_MAX_VECS) {
+		pr_warn("inserting bio is too large: %d iovecs, not intsert.\n",
+			nr_iovecs);
+		goto out_submit;
+	}
+	cache_bio = bio_alloc_bioset(GFP_NOWAIT, nr_iovecs,
+				     &dc->disk.bio_split);
 	if (!cache_bio)
 		goto out_submit;
 
-- 
2.26.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Kernel Oops: kernel BUG at block/bio.c:52
  2021-05-06  2:50     ` Coly Li
@ 2021-05-06  7:36       ` Marco Rebhan
  2021-05-06 10:04         ` Coly Li
  0 siblings, 1 reply; 7+ messages in thread
From: Marco Rebhan @ 2021-05-06  7:36 UTC (permalink / raw)
  To: Coly Li; +Cc: linux-bcache, victor

[-- Attachment #1: Type: text/plain, Size: 2406 bytes --]

On Thursday, 6 May 2021 04:50:06 CEST Coly Li wrote:
> Could you please try the attached patch ?  If a suspicious bio
> allocation happens, this patch will print out a warning kernel message
> and avoid the BUG() panic.

Looks like the patch works. Here's a dmesg log that comes from starting
up a game with a bunch of large files (which I'm guessing are what
makes this happen more often?)

[   39.284230] bcache: cached_dev_cache_miss() inserting bio is too large: 344 iovecs, not intsert.
[   65.415896] bcache: cached_dev_cache_miss() inserting bio is too large: 282 iovecs, not intsert.
[   65.446327] bcache: cached_dev_cache_miss() inserting bio is too large: 946 iovecs, not intsert.
[   88.116826] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
[   88.957691] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
[   89.020544] bcache: cached_dev_cache_miss() inserting bio is too large: 332 iovecs, not intsert.
[   90.531875] bcache: cached_dev_cache_miss() inserting bio is too large: 261 iovecs, not intsert.
[  111.464124] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
[  111.497049] bcache: cached_dev_cache_miss() inserting bio is too large: 262 iovecs, not intsert.
[  111.638928] bcache: cached_dev_cache_miss() inserting bio is too large: 318 iovecs, not intsert.
[  155.884142] bcache: cached_dev_cache_miss() inserting bio is too large: 447 iovecs, not intsert.
[  156.146070] bcache: cached_dev_cache_miss() inserting bio is too large: 512 iovecs, not intsert.
[  156.223795] bcache: cached_dev_cache_miss() inserting bio is too large: 277 iovecs, not intsert.
[  156.326145] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
[  156.602906] bcache: cached_dev_cache_miss() inserting bio is too large: 290 iovecs, not intsert.
[  156.646365] bcache: cached_dev_cache_miss() inserting bio is too large: 341 iovecs, not intsert.
[  156.671285] bcache: cached_dev_cache_miss() inserting bio is too large: 501 iovecs, not intsert.
[  157.216087] bcache: cached_dev_cache_miss() inserting bio is too large: 258 iovecs, not intsert.
[  165.010961] bcache: cached_dev_cache_miss() inserting bio is too large: 413 iovecs, not intsert.
[  165.386483] bcache: cached_dev_cache_miss() inserting bio is too large: 260 iovecs, not intsert.

Thanks,
Marco

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Kernel Oops: kernel BUG at block/bio.c:52
  2021-05-06  7:36       ` Marco Rebhan
@ 2021-05-06 10:04         ` Coly Li
  2021-05-06 15:46           ` Marco Rebhan
  0 siblings, 1 reply; 7+ messages in thread
From: Coly Li @ 2021-05-06 10:04 UTC (permalink / raw)
  To: Marco Rebhan; +Cc: linux-bcache, victor

On 5/6/21 3:36 PM, Marco Rebhan wrote:
> On Thursday, 6 May 2021 04:50:06 CEST Coly Li wrote:
>> Could you please try the attached patch ?  If a suspicious bio
>> allocation happens, this patch will print out a warning kernel message
>> and avoid the BUG() panic.
> 
> Looks like the patch works. Here's a dmesg log that comes from starting
> up a game with a bunch of large files (which I'm guessing are what
> makes this happen more often?)
> 

Before 5.12, the allocation failure returns a NULL pointer, so such
issue was hidden. I will post a quick fix to emulate previous code logic
without bothering bio_alloc_bioset().

Thanks for the quick test and verification.

Coly Li


> [   39.284230] bcache: cached_dev_cache_miss() inserting bio is too large: 344 iovecs, not intsert.
> [   65.415896] bcache: cached_dev_cache_miss() inserting bio is too large: 282 iovecs, not intsert.
> [   65.446327] bcache: cached_dev_cache_miss() inserting bio is too large: 946 iovecs, not intsert.
> [   88.116826] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
> [   88.957691] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
> [   89.020544] bcache: cached_dev_cache_miss() inserting bio is too large: 332 iovecs, not intsert.
> [   90.531875] bcache: cached_dev_cache_miss() inserting bio is too large: 261 iovecs, not intsert.
> [  111.464124] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
> [  111.497049] bcache: cached_dev_cache_miss() inserting bio is too large: 262 iovecs, not intsert.
> [  111.638928] bcache: cached_dev_cache_miss() inserting bio is too large: 318 iovecs, not intsert.
> [  155.884142] bcache: cached_dev_cache_miss() inserting bio is too large: 447 iovecs, not intsert.
> [  156.146070] bcache: cached_dev_cache_miss() inserting bio is too large: 512 iovecs, not intsert.
> [  156.223795] bcache: cached_dev_cache_miss() inserting bio is too large: 277 iovecs, not intsert.
> [  156.326145] bcache: cached_dev_cache_miss() inserting bio is too large: 342 iovecs, not intsert.
> [  156.602906] bcache: cached_dev_cache_miss() inserting bio is too large: 290 iovecs, not intsert.
> [  156.646365] bcache: cached_dev_cache_miss() inserting bio is too large: 341 iovecs, not intsert.
> [  156.671285] bcache: cached_dev_cache_miss() inserting bio is too large: 501 iovecs, not intsert.
> [  157.216087] bcache: cached_dev_cache_miss() inserting bio is too large: 258 iovecs, not intsert.
> [  165.010961] bcache: cached_dev_cache_miss() inserting bio is too large: 413 iovecs, not intsert.
> [  165.386483] bcache: cached_dev_cache_miss() inserting bio is too large: 260 iovecs, not intsert.
> 
> Thanks,
> Marco
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Kernel Oops: kernel BUG at block/bio.c:52
  2021-05-06 10:04         ` Coly Li
@ 2021-05-06 15:46           ` Marco Rebhan
  0 siblings, 0 replies; 7+ messages in thread
From: Marco Rebhan @ 2021-05-06 15:46 UTC (permalink / raw)
  To: Coly Li; +Cc: linux-bcache, victor

[-- Attachment #1: Type: text/plain, Size: 412 bytes --]

On Thursday, 6 May 2021 12:04:00 CEST Coly Li wrote:
> Before 5.12, the allocation failure returns a NULL pointer, so such
> issue was hidden. I will post a quick fix to emulate previous code
> logic without bothering bio_alloc_bioset().

Ah, I see. I guess that means then I can actually use this patch until 
that fix is mainlined :)

> Thanks for the quick test and verification.

Glad to help!

Thanks,
Marco

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-05-06 15:46 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-20 14:54 Kernel Oops: kernel BUG at block/bio.c:52 Victor Westerhuis
2021-04-20 16:14 ` Coly Li
2021-04-27 18:57   ` Marco Rebhan
2021-05-06  2:50     ` Coly Li
2021-05-06  7:36       ` Marco Rebhan
2021-05-06 10:04         ` Coly Li
2021-05-06 15:46           ` Marco Rebhan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).