bcache: Make sure to pass GFP_WAIT to mempool_alloc()
PATCH 1/1 bcache: Make sure to pass GFP_WAIT to mempool_alloc()
this was very wrong - mempool_alloc() only guarantees success with GFP_WAIT. bcache uses GFP_NOWAIT in various other places where we have a fallback, circuits must've gotten crossed when writing this code or something.
---
The bug was introduced in v3.11, fixed in v3.17.
Jens mentioned bcache has many stable@ candidates previously: https://lkml.org/lkml/2014/9/5/360
I'm cherry-picking this fix because I was getting crashes.
--- drivers/md/bcache/btree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/md/bcache/btree.c +1 -1
@@ -200,11 +200,11 @@ void bch_btree_node_read_done(struct btree *b) {const char *err ="bad btree header" ;struct bset *i =btree_bset_first (b);struct btree_iter *iter; - iter =mempool_alloc (b->c->fill_iter,GFP_NOWAIT ); + iter =mempool_alloc (b->c->fill_iter,GFP_NOIO ); iter->size = b->c->sb.bucket_size / b->c->sb.block_size; iter->used =0 ;#ifdef CONFIG_BCACHE_DEBUG iter->b = &b->keys;
Signature · 1 line
2.2.0.71.g3365589
Quoted 9 lines · Gabriel de Perthuis
this was very wrong -
mempool_alloc()only guarantees success withGFP_WAIT. bcache usesGFP_NOWAITin various other places where we have a fallback, circuits must've gotten crossed when writing this code or something.Signed-off-by Kent Overstreet <[email protected]>---
The bug was introduced in v3.11, fixed in v3.17.
Quoted 8 lines
Jens mentioned bcache has many stable@ candidates previously:
https://lkml.org/lkml/2014/9/5/360I'm cherry-picking this fix because I was getting crashes.
--- drivers/md/bcache/btree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
What exactly is the commit id for this in Linus's tree?
thanks,
greg k-h