You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
block: don't unecessarily clobber bi_error for chained bios
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>
This commit is contained in:
committed by
Jens Axboe
parent
3684aa7099
commit
af3e3a5259
+5
-2
@@ -300,7 +300,8 @@ static void bio_chain_endio(struct bio *bio)
|
||||
{
|
||||
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);
|
||||
}
|
||||
@@ -1753,7 +1754,9 @@ void bio_endio(struct bio *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 {
|
||||
|
||||
Reference in New Issue
Block a user