Alan Cox ec9c9e7363 Eliminate inconsistency in the setting of the B_DONE flag. Specifically,
make the b_iodone callback responsible for setting it if it is needed.
Previously, it was set unconditionally by bufdone() without holding
whichever lock is shared by the b_iodone callback and the corresponding
top-half function.  Consequently, in a race, the top-half function could
conclude that operation was done before the b_iodone callback finished.
See, for example, aio_physwakeup() and aio_fphysio().

Note: I don't believe that the other, more widely-used b_iodone callbacks
are affected.

Discussed with: jeff
Reviewed by: phk
MFC after: 2 weeks
2005-07-20 19:06:06 +00:00
..
2005-07-15 12:22:14 +00:00
2005-07-13 20:35:09 +00:00
2005-03-11 22:07:04 +00:00
2005-07-20 13:34:16 +00:00
2005-03-28 18:31:18 +00:00
2005-07-20 18:08:16 +00:00
2005-07-09 18:30:31 +00:00
2005-07-19 10:12:58 +00:00
2005-07-20 08:59:45 +00:00
2005-02-23 22:44:38 +00:00