X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Fbio.c;h=3312fcc3c0986401511c1fc7c3948a6af6c69876;hb=41c5ae6898454277ec88e8e7278c8c58026363a3;hp=d59ddbf79626cd0ca546a15bac0196544445fafd;hpb=37e58df30063e229ee5157f9d1c1fa1d749917c2;p=~andy%2Flinux diff --git a/fs/bio.c b/fs/bio.c index d59ddbf7962..3312fcc3c09 100644 --- a/fs/bio.c +++ b/fs/bio.c @@ -248,11 +248,13 @@ inline int bio_hw_segments(struct request_queue *q, struct bio *bio) */ void __bio_clone(struct bio *bio, struct bio *bio_src) { - struct request_queue *q = bdev_get_queue(bio_src->bi_bdev); - memcpy(bio->bi_io_vec, bio_src->bi_io_vec, bio_src->bi_max_vecs * sizeof(struct bio_vec)); + /* + * most users will be overriding ->bi_bdev with a new target, + * so we don't set nor calculate new physical/hw segment counts here + */ bio->bi_sector = bio_src->bi_sector; bio->bi_bdev = bio_src->bi_bdev; bio->bi_flags |= 1 << BIO_CLONED; @@ -260,8 +262,6 @@ void __bio_clone(struct bio *bio, struct bio *bio_src) bio->bi_vcnt = bio_src->bi_vcnt; bio->bi_size = bio_src->bi_size; bio->bi_idx = bio_src->bi_idx; - bio_phys_segments(q, bio); - bio_hw_segments(q, bio); } /** @@ -903,7 +903,7 @@ void bio_set_pages_dirty(struct bio *bio) } } -void bio_release_pages(struct bio *bio) +static void bio_release_pages(struct bio *bio) { struct bio_vec *bvec = bio->bi_io_vec; int i;