]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/md/dm-io.c
Merge tag 'fbdev-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux
[karo-tx-linux.git] / drivers / md / dm-io.c
index efc6659f9d6a6c651d925c24aa6cb73c4453ee07..6f8e83b2a6f801b3524a7b58598ed79e7bc82bae 100644 (file)
@@ -138,6 +138,7 @@ static void endio(struct bio *bio)
 {
        struct io *io;
        unsigned region;
+       int error;
 
        if (bio->bi_error && bio_data_dir(bio) == READ)
                zero_fill_bio(bio);
@@ -147,9 +148,10 @@ static void endio(struct bio *bio)
         */
        retrieve_io_and_region_from_bio(bio, &io, &region);
 
+       error = bio->bi_error;
        bio_put(bio);
 
-       dec_count(io, region, bio->bi_error);
+       dec_count(io, region, error);
 }
 
 /*-----------------------------------------------------------------
@@ -314,7 +316,7 @@ static void do_region(int rw, unsigned region, struct dm_io_region *where,
                if ((rw & REQ_DISCARD) || (rw & REQ_WRITE_SAME))
                        num_bvecs = 1;
                else
-                       num_bvecs = min_t(int, bio_get_nr_vecs(where->bdev),
+                       num_bvecs = min_t(int, BIO_MAX_PAGES,
                                          dm_sector_div_up(remaining, (PAGE_SIZE >> SECTOR_SHIFT)));
 
                bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios);