HomeFreeBSD

aio: Fix more synchronization issues in aio_biowakeup.

Description

aio: Fix more synchronization issues in aio_biowakeup.

  • Use atomic_store to set job->error. atomic_set does an or operation, not assignment.
  • Use refcount_* to manage job->nbio.

    This ensures proper memory barriers are present so that the last bio won't see a possibly stale value of job->error.
  • Don't re-read job->error after reading it via atomic_load.

Reported by: markj (1)
Reviewed by: mjg, markj
Differential Revision: https://reviews.freebsd.org/D38611

(cherry picked from commit 98844e99d40a90ae89d84762e07150af3a8f89bd)

Details

Provenance
jhbAuthored on Feb 15 2023, 9:32 PM
Reviewer
mjg
Differential Revision
D38611: aio: Fix more synchronization issues in aio_biowakeup.
Parents
rG3070a1850683: aio_biowakeup: Various style fixes.
Branches
Unknown
Tags
Unknown