cvs commit: src/sys/kern kern_event.c

John Baldwin jhb at FreeBSD.org
Fri Apr 14 14:27:29 UTC 2006


jhb         2006-04-14 14:27:28 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             kern_event.c 
  Log:
  Drop the kqueue global mutex as soon as we are finished with it rather
  than keeping it locked until we exit the function to optimize the case
  where the lock would be dropped and later reacquired.  The optimization
  was broken when kevent's were moved from UFS to VFS and the knote list
  lock for a vnode kevent became the lockmgr vnode lock.  If one tried
  to use a kqueue that contained events for a kqueue fd followed by a vnode,
  then the kq global lock would end up being held when the vnode lock was
  acquired which could result in sleeping with a mutex held (and subsequent
  panics) if the vnode lock was contested.
  
  Reviewed by:    jmg
  Tested by:      ps (on 6.x)
  MFC after:      3 days
  
  Revision  Changes    Path
  1.99      +2 -4      src/sys/kern/kern_event.c


More information about the cvs-src mailing list