NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

PR/38761 CVS commit: src/sys/kern



The following reply was made to PR kern/38761; it has been noted by GNATS.

From: Chris Gilbert <chris%netbsd.org@localhost>
To: gnats-bugs%gnats.NetBSD.org@localhost
Cc: 
Subject: PR/38761 CVS commit: src/sys/kern
Date: Sun, 15 Jun 2008 09:56:18 +0000 (UTC)

 Module Name:   src
 Committed By:  chris
 Date:          Sun Jun 15 09:56:18 UTC 2008
 
 Modified Files:
        src/sys/kern: kern_condvar.c
 
 Log Message:
 Fix for biowait hangs, and possibly other condvar hangs.  Also should fix
 PR kern/38761.
 
 The condvar must access the sleepq with the sleepq lock held, doing so
 is causing inconsistent sleepq state to be read.
 
 This is because some accesses to the sleepq don't come via the cv code,
 but are call directly into sleepq_changepri and sleepq_lendpri, which take
 the sleepq lock, and removes then re-inserts lwps into the sleepq.
 
 Running a build.sh with -j8 now completes on my quad-core, also tested by
 Simon@ on a 8-core server and matt@ on a quad-core.
 
 I believe there is room to be more efficient with this, as we now take the
 sleepq lock for all cv_broadcast and cv_signal calls. I'll look into this
 and post a diff to tech-kern.
 
 
 To generate a diff of this commit:
 cvs rdiff -r1.22 -r1.23 src/sys/kern/kern_condvar.c
 
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.
 


Home | Main Index | Thread Index | Old Index