Only overwrite the parents bi_error if it was zero. That way a successful
bio completion doesn't reset the error pointer.
Reported-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
{
struct bio *parent = bio->bi_private;
- parent->bi_error = bio->bi_error;
+ if (!parent->bi_error)
+ parent->bi_error = bio->bi_error;
bio_endio(parent);
bio_put(bio);
}
*/
if (bio->bi_end_io == bio_chain_endio) {
struct bio *parent = bio->bi_private;
- parent->bi_error = bio->bi_error;
+
+ if (!parent->bi_error)
+ parent->bi_error = bio->bi_error;
bio_put(bio);
bio = parent;
} else {