|
@@ -5297,9 +5297,14 @@ static void btrfs_end_bio(struct bio *bio, int err)
|
|
if (!is_orig_bio) {
|
|
if (!is_orig_bio) {
|
|
bio_put(bio);
|
|
bio_put(bio);
|
|
bio = bbio->orig_bio;
|
|
bio = bbio->orig_bio;
|
|
- } else {
|
|
|
|
- atomic_inc(&bio->bi_remaining);
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * We have original bio now. So increment bi_remaining to
|
|
|
|
+ * account for it in endio
|
|
|
|
+ */
|
|
|
|
+ atomic_inc(&bio->bi_remaining);
|
|
|
|
+
|
|
bio->bi_private = bbio->private;
|
|
bio->bi_private = bbio->private;
|
|
bio->bi_end_io = bbio->end_io;
|
|
bio->bi_end_io = bbio->end_io;
|
|
btrfs_io_bio(bio)->mirror_num = bbio->mirror_num;
|
|
btrfs_io_bio(bio)->mirror_num = bbio->mirror_num;
|