diff options
author | NeilBrown <neilb@suse.com> | 2017-03-10 07:00:47 +0100 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-03-11 23:31:37 +0100 |
commit | f5fe1b51905df7cfe4fdfd85c5fb7bc5b71a094f (patch) | |
tree | fbc336ee9d7ca18f8bfd81a8b54e99efd0555241 /drivers/md/raid10.c | |
parent | Merge tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git... (diff) | |
download | linux-f5fe1b51905df7cfe4fdfd85c5fb7bc5b71a094f.tar.xz linux-f5fe1b51905df7cfe4fdfd85c5fb7bc5b71a094f.zip |
blk: Ensure users for current->bio_list can see the full list.
Commit 79bd99596b73 ("blk: improve order of bio handling in generic_make_request()")
changed current->bio_list so that it did not contain *all* of the
queued bios, but only those submitted by the currently running
make_request_fn.
There are two places which walk the list and requeue selected bios,
and others that check if the list is empty. These are no longer
correct.
So redefine current->bio_list to point to an array of two lists, which
contain all queued bios, and adjust various code to test or walk both
lists.
Signed-off-by: NeilBrown <neilb@suse.com>
Fixes: 79bd99596b73 ("blk: improve order of bio handling in generic_make_request()")
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r-- | drivers/md/raid10.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 063c43d83b72..0536658c9d40 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -974,7 +974,8 @@ static void wait_barrier(struct r10conf *conf) !conf->barrier || (atomic_read(&conf->nr_pending) && current->bio_list && - !bio_list_empty(current->bio_list)), + (!bio_list_empty(¤t->bio_list[0]) || + !bio_list_empty(¤t->bio_list[1]))), conf->resync_lock); conf->nr_waiting--; if (!conf->nr_waiting) |