[media] media: videobuf2: Replace videobuf2-core with videobuf2-v4l2
[deliverable/linux.git] / fs / direct-io.c
index e1639c8c14d5da48ab30a5cc93d085c924bb0a6c..11256291642e5df1f66fd1880109cf7c260796cc 100644 (file)
@@ -459,12 +459,14 @@ static int dio_bio_complete(struct dio *dio, struct bio *bio)
 {
        struct bio_vec *bvec;
        unsigned i;
+       int err;
 
        if (bio->bi_error)
                dio->io_error = -EIO;
 
        if (dio->is_async && dio->rw == READ) {
                bio_check_pages_dirty(bio);     /* transfers ownership */
+               err = bio->bi_error;
        } else {
                bio_for_each_segment_all(bvec, bio, i) {
                        struct page *page = bvec->bv_page;
@@ -473,9 +475,10 @@ static int dio_bio_complete(struct dio *dio, struct bio *bio)
                                set_page_dirty_lock(page);
                        page_cache_release(page);
                }
+               err = bio->bi_error;
                bio_put(bio);
        }
-       return bio->bi_error;
+       return err;
 }
 
 /*
@@ -652,7 +655,7 @@ static inline int dio_new_bio(struct dio *dio, struct dio_submit *sdio,
        if (ret)
                goto out;
        sector = start_sector << (sdio->blkbits - 9);
-       nr_pages = min(sdio->pages_in_io, bio_get_nr_vecs(map_bh->b_bdev));
+       nr_pages = min(sdio->pages_in_io, BIO_MAX_PAGES);
        BUG_ON(nr_pages <= 0);
        dio_bio_alloc(dio, sdio, map_bh->b_bdev, sector, nr_pages);
        sdio->boundary = 0;
This page took 0.028125 seconds and 5 git commands to generate.