Loading drivers/md/md.c +4 −13 Original line number Diff line number Diff line Loading @@ -194,21 +194,12 @@ void md_trim_bio(struct bio *bio, int offset, int size) if (offset == 0 && size == bio->bi_size) return; 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); 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, Loading Loading
drivers/md/md.c +4 −13 Original line number Diff line number Diff line Loading @@ -194,21 +194,12 @@ void md_trim_bio(struct bio *bio, int offset, int size) if (offset == 0 && size == bio->bi_size) return; 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); 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, Loading