sleeping thread panic?
Alan Cox
alc at rice.edu
Sun Jul 8 17:39:17 UTC 2012
On 07/08/2012 11:59, Konstantin Belousov wrote:
> On Sun, Jul 08, 2012 at 12:57:39PM -0400, Michael Butler wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> On 07/08/12 11:18, Michael Butler wrote:
>>> On 07/08/12 10:31, Konstantin Belousov wrote:
>>>> Catch it next time ? This should be quite reproducable, if real.
>>>> Actually, try this.
>>>> diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
>>>> index 9485fdd..de33afc 100644
>>>> --- a/sys/vm/vm_pageout.c
>>>> +++ b/sys/vm/vm_pageout.c
>>>> @@ -1030,7 +1030,6 @@ rescan0:
>>>> ++pageout_lock_miss;
>>>> if (object->flags& OBJ_MIGHTBEDIRTY)
>>>> vnodes_skipped++;
>>>> - vm_page_lock_queues();
>>>> goto unlock_and_continue;
>> [ .. snip .. ]
>>
>>> Just waiting for the second of two attached RAID arrays to finish
>>> rebuilding and I'll give this a shot - thanks!
>> I repeated the dumps from last night over NFS with this patch installed
>> and no more panics :-)
> But, are panics reproducable without the patch ?
The patch looks correct. I'm sorry that I didn't catch this problem
when I reviewed the original patch yesterday. :-(
I don't think that you really need these assertions:
+ KASSERT(queues_locked, ("unlocked queues
2"));
+ mtx_assert(&vm_page_queue_mtx, MA_OWNED);
The control flow from the preceding acquire is straightforward and
vm_page_requeue() itself asserts that the page queues lock is held.
Alan
More information about the freebsd-current
mailing list