From owner-cvs-all Mon May 21 19:34:34 2001 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 970A737B422; Mon, 21 May 2001 19:34:30 -0700 (PDT) (envelope-from grog@FreeBSD.org) Received: (from grog@localhost) by freefall.freebsd.org (8.11.1/8.11.1) id f4M2YUv16228; Mon, 21 May 2001 19:34:30 -0700 (PDT) (envelope-from grog) Message-Id: <200105220234.f4M2YUv16228@freefall.freebsd.org> From: Greg Lehey Date: Mon, 21 May 2001 19:34:30 -0700 (PDT) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/dev/vinum vinumlock.c X-FreeBSD-CVS-Branch: HEAD Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG grog 2001/05/21 19:34:30 PDT Modified files: sys/dev/vinum vinumlock.c Log: Add a new debug flag, DEBUG_LOCKREQS, which logs only lock requests. Use this instead of DEBUG_LASTREQS to decide whether to log lock requests. MFS: 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. Revision Changes Path 1.23 +26 -13 src/sys/dev/vinum/vinumlock.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message