cvs commit: src/sys/kern vfs_aio.c vfs_bio.c src/sys/ufs/ffs ffs_vfsops.c src/sys/vm swap_pager.c

Alan Cox alc at FreeBSD.org
Wed Jul 20 19:06:07 GMT 2005


alc         2005-07-20 19:06:06 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             vfs_aio.c vfs_bio.c 
    sys/ufs/ffs          ffs_vfsops.c 
    sys/vm               swap_pager.c 
  Log:
  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
  
  Revision  Changes    Path
  1.196     +1 -0      src/sys/kern/vfs_aio.c
  1.492     +0 -1      src/sys/kern/vfs_bio.c
  1.291     +1 -1      src/sys/ufs/ffs/ffs_vfsops.c
  1.274     +0 -2      src/sys/vm/swap_pager.c


More information about the cvs-src mailing list