diff options
Diffstat (limited to 'fs/bio.c')
-rw-r--r-- | fs/bio.c | 27 |
1 files changed, 2 insertions, 25 deletions
@@ -532,13 +532,11 @@ void __bio_clone(struct bio *bio, struct bio *bio_src) | |||
532 | * most users will be overriding ->bi_bdev with a new target, | 532 | * most users will be overriding ->bi_bdev with a new target, |
533 | * so we don't set nor calculate new physical/hw segment counts here | 533 | * so we don't set nor calculate new physical/hw segment counts here |
534 | */ | 534 | */ |
535 | bio->bi_iter.bi_sector = bio_src->bi_iter.bi_sector; | ||
536 | bio->bi_bdev = bio_src->bi_bdev; | 535 | bio->bi_bdev = bio_src->bi_bdev; |
537 | bio->bi_flags |= 1 << BIO_CLONED; | 536 | bio->bi_flags |= 1 << BIO_CLONED; |
538 | bio->bi_rw = bio_src->bi_rw; | 537 | bio->bi_rw = bio_src->bi_rw; |
539 | bio->bi_vcnt = bio_src->bi_vcnt; | 538 | bio->bi_vcnt = bio_src->bi_vcnt; |
540 | bio->bi_iter.bi_size = bio_src->bi_iter.bi_size; | 539 | bio->bi_iter = bio_src->bi_iter; |
541 | bio->bi_iter.bi_idx = bio_src->bi_iter.bi_idx; | ||
542 | } | 540 | } |
543 | EXPORT_SYMBOL(__bio_clone); | 541 | EXPORT_SYMBOL(__bio_clone); |
544 | 542 | ||
@@ -808,28 +806,7 @@ void bio_advance(struct bio *bio, unsigned bytes) | |||
808 | if (bio_integrity(bio)) | 806 | if (bio_integrity(bio)) |
809 | bio_integrity_advance(bio, bytes); | 807 | bio_integrity_advance(bio, bytes); |
810 | 808 | ||
811 | bio->bi_iter.bi_sector += bytes >> 9; | 809 | bio_advance_iter(bio, &bio->bi_iter, bytes); |
812 | bio->bi_iter.bi_size -= bytes; | ||
813 | |||
814 | if (bio->bi_rw & BIO_NO_ADVANCE_ITER_MASK) | ||
815 | return; | ||
816 | |||
817 | while (bytes) { | ||
818 | if (unlikely(bio->bi_iter.bi_idx >= bio->bi_vcnt)) { | ||
819 | WARN_ONCE(1, "bio idx %d >= vcnt %d\n", | ||
820 | bio->bi_iter.bi_idx, bio->bi_vcnt); | ||
821 | break; | ||
822 | } | ||
823 | |||
824 | if (bytes >= bio_iovec(bio).bv_len) { | ||
825 | bytes -= bio_iovec(bio).bv_len; | ||
826 | bio->bi_iter.bi_idx++; | ||
827 | } else { | ||
828 | bio_iovec(bio).bv_len -= bytes; | ||
829 | bio_iovec(bio).bv_offset += bytes; | ||
830 | bytes = 0; | ||
831 | } | ||
832 | } | ||
833 | } | 810 | } |
834 | EXPORT_SYMBOL(bio_advance); | 811 | EXPORT_SYMBOL(bio_advance); |
835 | 812 | ||