From d77bbe4fd044a8fbae1949baa12b351671737ffd Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 25 Jan 2008 12:44:44 +0100 Subject: [PATCH] --- yaml --- r: 77638 b: refs/heads/master c: 5d84070ee0a433620c57e85dac7f82faaec5fbb3 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/bio.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 317e267c6889..d2825a448df0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 482eb689169948e9f4966fbae6be4d6bc0bfa818 +refs/heads/master: 5d84070ee0a433620c57e85dac7f82faaec5fbb3 diff --git a/trunk/fs/bio.c b/trunk/fs/bio.c index d59ddbf79626..242e409dab4b 100644 --- a/trunk/fs/bio.c +++ b/trunk/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); } /**