block: Remove bi_idx hacks
[firefly-linux-kernel-4.4.55.git] / drivers / md / bcache / io.c
index 6e04f3bb02864eb7c2cf71a094af98903b5c4c1c..0f0ab659914de2da96dc04b65954cb71a32f7615 100644 (file)
 
 #include <linux/blkdev.h>
 
-static void bch_bi_idx_hack_endio(struct bio *bio, int error)
-{
-       struct bio *p = bio->bi_private;
-
-       bio_endio(p, error);
-       bio_put(bio);
-}
-
-static void bch_generic_make_request_hack(struct bio *bio)
-{
-       if (bio->bi_iter.bi_idx) {
-               struct bio_vec bv;
-               struct bvec_iter iter;
-               unsigned segs = bio_segments(bio);
-               struct bio *clone = bio_alloc(GFP_NOIO, segs);
-
-               bio_for_each_segment(bv, bio, iter)
-                       clone->bi_io_vec[clone->bi_vcnt++] = bv;
-
-               clone->bi_iter.bi_sector = bio->bi_iter.bi_sector;
-               clone->bi_bdev          = bio->bi_bdev;
-               clone->bi_rw            = bio->bi_rw;
-               clone->bi_vcnt          = segs;
-               clone->bi_iter.bi_size  = bio->bi_iter.bi_size;
-
-               clone->bi_private       = bio;
-               clone->bi_end_io        = bch_bi_idx_hack_endio;
-
-               bio = clone;
-       }
-
-       /*
-        * Hack, since drivers that clone bios clone up to bi_max_vecs, but our
-        * bios might have had more than that (before we split them per device
-        * limitations).
-        *
-        * To be taken out once immutable bvec stuff is in.
-        */
-       bio->bi_max_vecs = bio->bi_vcnt;
-
-       generic_make_request(bio);
-}
-
 /**
  * bch_bio_split - split a bio
  * @bio:       bio to split
@@ -222,12 +179,12 @@ void bch_generic_make_request(struct bio *bio, struct bio_split_pool *p)
                n->bi_private   = &s->cl;
 
                closure_get(&s->cl);
-               bch_generic_make_request_hack(n);
+               generic_make_request(n);
        } while (n != bio);
 
        continue_at(&s->cl, bch_bio_submit_split_done, NULL);
 submit:
-       bch_generic_make_request_hack(bio);
+       generic_make_request(bio);
 }
 
 /* Bios with headers */