cvs commit: src/sys/kern kern_lockf.c
Jeff Roberson
jroberson at chesapeake.net
Wed Mar 19 02:08:16 PDT 2008
On Wed, 19 Mar 2008, Doug Rabson wrote:
>
> On 19 Mar 2008, at 07:13, Jeff Roberson wrote:
>
>> jeff 2008-03-19 07:13:24 UTC
>>
>> FreeBSD src repository
>>
>> Modified files:
>> sys/kern kern_lockf.c
>> Log:
>> - Fix the last of the threading bugs that were introduced as far back as
>> 1.38 in 2001. Break out of the FOREACH_THREAD_IN_PROC loop when we've
>> discovered a new proc in the chain.
>> - Increment i and check for maxlockdepth once per matching process not
>> once per thread. This didn't properly terminate the loop before.
>> - Fix a bug which has existed potentially since rev 1.1.
>> waitblock->lf_next
>> can be NULL when a thread has been woken-up but not yet scheduled.
>> Check
>> for this condition rather than blindly dereferencing.
>>
>> Found by: libMicro
>>
>> Revision Changes Path
>> 1.59 +12 -6 src/sys/kern/kern_lockf.c
>
> I have completely removed all this proc tomfoolery in my perforce branch and
> have replaced it with a real deadlock detection system instead of this
> horrible code. Apart from anything else, the existing code has serious
> locking problems - if the deadlock loop spans two or more vnodes, it doesn't
> lock any but the first one.
>
> I should have a patch ready for review (along with the new kernel NFS lock
> manager) towards the end of this week and I hope to get the thing into
> -current some time next week.
>
Thanks very much Doug. I'm looking forward to it!
Jeff
More information about the cvs-src
mailing list