Do not set BIO_DONE if the BIO specifies a completion handler.

biowait() will otherwise race with completions of such BIOs. In-tree code
only calls biowait() on BIOs that do not specify a handler, so this change
should not have any functional impact.

Reviewed by:	mav
MFC after:	1 month
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D9070
This commit is contained in:
Mark Johnston 2017-01-10 21:41:28 +00:00
parent 093cf24619
commit 90e17792c8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=311901

View File

@ -3905,10 +3905,8 @@ biodone(struct bio *bp)
bp->bio_flags |= BIO_DONE;
wakeup(bp);
mtx_unlock(mtxp);
} else {
bp->bio_flags |= BIO_DONE;
} else
done(bp);
}
}
/*