[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120926103827.4d880cf4@notabene.brown>
Date: Wed, 26 Sep 2012 10:38:27 +1000
From: NeilBrown <neilb@...e.de>
To: Kent Overstreet <koverstreet@...gle.com>
Cc: linux-bcache@...r.kernel.org, linux-kernel@...r.kernel.org,
dm-devel@...hat.com, tj@...nel.org, axboe@...nel.dk,
vgoyal@...hat.com
Subject: Re: [PATCH v3 05/26] md: Convert md_trim_bio() to use bio_advance()
On Mon, 24 Sep 2012 15:34:45 -0700 Kent Overstreet <koverstreet@...gle.com>
wrote:
> Signed-off-by: Kent Overstreet <koverstreet@...gle.com>
> CC: Jens Axboe <axboe@...nel.dk>
> CC: NeilBrown <neilb@...e.de>
> ---
> drivers/md/md.c | 19 +++++--------------
> 1 file changed, 5 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/md/md.c b/drivers/md/md.c
> index 7a2b079..51ce48c 100644
> --- a/drivers/md/md.c
> +++ b/drivers/md/md.c
> @@ -190,25 +190,16 @@ void md_trim_bio(struct bio *bio, int offset, int size)
> struct bio_vec *bvec;
> int sofar = 0;
>
> - size <<= 9;
> if (offset == 0 && size == bio->bi_size)
> return;
Safer to leave the "size <<= 9" where it is, otherwise that condition will
always fail.
Otherwise,
Acked-by: NeilBrown <neilb@...e.de>
NeilBrown
>
> - bio->bi_sector += offset;
> - bio->bi_size = size;
> - offset <<= 9;
> clear_bit(BIO_SEG_VALID, &bio->bi_flags);
>
> - while (bio->bi_idx < bio->bi_vcnt &&
> - bio->bi_io_vec[bio->bi_idx].bv_len <= offset) {
> - /* remove this whole bio_vec */
> - offset -= bio->bi_io_vec[bio->bi_idx].bv_len;
> - bio->bi_idx++;
> - }
> - if (bio->bi_idx < bio->bi_vcnt) {
> - bio->bi_io_vec[bio->bi_idx].bv_offset += offset;
> - bio->bi_io_vec[bio->bi_idx].bv_len -= offset;
> - }
> + bio_advance(bio, offset << 9);
> +
> + size <<= 9;
> + bio->bi_size = size;
> +
> /* avoid any complications with bi_idx being non-zero*/
> if (bio->bi_idx) {
> memmove(bio->bi_io_vec, bio->bi_io_vec+bio->bi_idx,
Download attachment "signature.asc" of type "application/pgp-signature" (829 bytes)
Powered by blists - more mailing lists