bcache: Make sure to pass GFP_WAIT to mempool_alloc()
authorKent Overstreet <kmo@daterainc.com>
Mon, 19 May 2014 15:57:55 +0000 (08:57 -0700)
committerJiri Slaby <jslaby@suse.cz>
Thu, 29 Jan 2015 14:44:53 +0000 (15:44 +0100)
commit bcf090e0040e30f8409e6a535a01e6473afb096f upstream.

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.

Signed-off-by: Kent Overstreet <kmo@daterainc.com>
Cc: Gabriel de Perthuis <g2p.code@gmail.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/md/bcache/btree.c

index d1734d9..26ca4db 100644 (file)
@@ -141,7 +141,7 @@ static void bch_btree_node_read_done(struct btree *b)
        struct bset *i = b->sets[0].data;
        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;