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-08 15:06:58 +00:00
2005-06-30 19:01:26 +00:00
2005-06-23 21:55:43 +00:00
2005-06-09 19:45:09 +00:00
2005-04-12 05:45:58 +00:00
2005-03-26 20:04:28 +00:00
2005-05-06 02:50:00 +00:00
2005-03-14 06:51:29 +00:00
2005-07-08 15:06:58 +00:00