diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2017-04-02 17:33:48 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-04-02 17:33:48 +0300 |
commit | bee3f412d6fc94011850f16cddce745d529411a5 (patch) | |
tree | 01b1823a3bc0cb760129ed15f7ec027a36edc48b /block/bio.c | |
parent | d597580d373774b1bdab84b3d26ff0b55162b916 (diff) | |
parent | 476e75a44b56038bee9207242d4bc718f6b4de06 (diff) | |
download | linux-bee3f412d6fc94011850f16cddce745d529411a5.tar.xz |
Merge branch 'parisc-4.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux into uaccess.parisc
Diffstat (limited to 'block/bio.c')
-rw-r--r-- | block/bio.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/block/bio.c b/block/bio.c index 5eec5e08417f..e75878f8b14a 100644 --- a/block/bio.c +++ b/block/bio.c @@ -376,10 +376,14 @@ static void punt_bios_to_rescuer(struct bio_set *bs) bio_list_init(&punt); bio_list_init(&nopunt); - while ((bio = bio_list_pop(current->bio_list))) + while ((bio = bio_list_pop(¤t->bio_list[0]))) bio_list_add(bio->bi_pool == bs ? &punt : &nopunt, bio); + current->bio_list[0] = nopunt; - *current->bio_list = nopunt; + bio_list_init(&nopunt); + while ((bio = bio_list_pop(¤t->bio_list[1]))) + bio_list_add(bio->bi_pool == bs ? &punt : &nopunt, bio); + current->bio_list[1] = nopunt; spin_lock(&bs->rescue_lock); bio_list_merge(&bs->rescue_list, &punt); @@ -466,7 +470,9 @@ struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs) * we retry with the original gfp_flags. */ - if (current->bio_list && !bio_list_empty(current->bio_list)) + if (current->bio_list && + (!bio_list_empty(¤t->bio_list[0]) || + !bio_list_empty(¤t->bio_list[1]))) gfp_mask &= ~__GFP_DIRECT_RECLAIM; p = mempool_alloc(bs->bio_pool, gfp_mask); |