block: fixup for generic bio chaining
authorKent Overstreet <kmo@daterainc.com>
Tue, 3 Dec 2013 21:24:08 +0000 (13:24 -0800)
committerJens Axboe <axboe@kernel.dk>
Tue, 3 Dec 2013 21:30:00 +0000 (14:30 -0700)
btrfs bits got lost in the rebase

Signed-off-by: Kent Overstreet <kmo@daterainc.com>
Cc: Chris Mason <clm@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/btrfs/disk-io.c
fs/btrfs/volumes.c

index 5a10c61adafc6337278ba1b08b7e5c8df8d1f60f..e71039ea66cf9d4bf8a56bdd984bc7e26597aa74 100644 (file)
@@ -1692,7 +1692,7 @@ static void end_workqueue_fn(struct btrfs_work *work)
        bio->bi_private = end_io_wq->private;
        bio->bi_end_io = end_io_wq->end_io;
        kfree(end_io_wq);
-       bio_endio(bio, error);
+       bio_endio_nodec(bio, error);
 }
 
 static int cleaner_kthread(void *arg)
index f2130de0ddc2cf4bc668060dd77c1a03b64f0a8d..37972d5db7375abd6d4022e3a1e6725ab357dd7c 100644 (file)
@@ -5297,6 +5297,8 @@ static void btrfs_end_bio(struct bio *bio, int err)
                if (!is_orig_bio) {
                        bio_put(bio);
                        bio = bbio->orig_bio;
+               } else {
+                       atomic_inc(&bio->bi_remaining);
                }
                bio->bi_private = bbio->private;
                bio->bi_end_io = bbio->end_io;