Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Apr 2001 23:27:11 -0700 (PDT)
From:      Greg Lehey <grog@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/dev/vinum vinumlock.c
Message-ID:  <200104040627.f346RFG23924@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
grog        2001/04/03 23:27:11 PDT

  Modified files:        (Branch: RELENG_4)
    sys/dev/vinum        vinumlock.c 
  Log:
  vinumlock: Catch a potential race condition where one process is
  	   waiting for a lock, and between the time it is woken and
  	   it retries the lock, another process gets it and places it
  	   in the first entry in the table.
  
  	   This problem has not been observed, but it's possible, and
  	   it's easy enough to fix.
  
  Submitted by:	tegge
  
  vinumunlock: Catch a real bug capable of hanging a system.  When
               releasing a lock, vinumunlock() called wakeup_one.  This
               caused wakeups to sometimes get lost.  After due
               consideration, we think that this is due to the fact that
               you can't guarantee that some other process is also
               waiting on the same address.  This makes wakeup_one a
               very dangerous function to use.
  
  These changes have not yet been committed to -CURRENT.  In view of the
  seriousness of the second one and the imminent 4.3-RELEASE, it seems
  excusable to commit to -STABLE first.
  
  36 hour test by:  grog
  Suggested by:     alfred
  Suffered by:      Andrew Gordon <arg@arg1.demon.co.uk>
  Approved by:      jkh
  
  Revision  Changes    Path
  1.18.2.3  +4 -4      src/sys/dev/vinum/vinumlock.c


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104040627.f346RFG23924>