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>
