Re: sleeping thread panic?

看板FB_current作者時間13年前 (2012/07/09 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串8/13 (看更多)
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 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; > } > KASSERT(mp != NULL, > @@ -1041,7 +1040,6 @@ rescan0: > if (vget(vp, LK_EXCLUSIVE | LK_TIMELOCK, > curthread)) { > VM_OBJECT_LOCK(object); > - vm_page_lock_queues(); > ++pageout_lock_miss; > if (object->flags & OBJ_MIGHTBEDIRTY) > vnodes_skipped++; > @@ -1082,15 +1080,17 @@ rescan0: > * If the page has become held it might > * be undergoing I/O, so skip it > */ > + KASSERT(queues_locked, ("unlocked queues 2")); > + mtx_assert(&vm_page_queue_mtx, MA_OWNED); > if (m->hold_count) { > - vm_page_lock_queues(); > - queues_locked = TRUE; > vm_page_unlock(m); > vm_page_requeue(m); > if (object->flags & OBJ_MIGHTBEDIRTY) > vnodes_skipped++; > goto unlock_and_continue; > } > + vm_page_unlock_queues(); > + queues_locked = FALSE; > } > > /* > Just waiting for the second of two attached RAID arrays to finish rebuilding and I'll give this a shot - thanks! imb -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEARECAAYFAk/5pKgACgkQQv9rrgRC1JKXAgCdEJhZIKRmLbAzIROKmN2WuZCU mb4AnR3Z+BrN7uqwYnXwubBEBx/QlWf8 =Ne6G -----END PGP SIGNATURE----- _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
文章代碼(AID): #1F-ShV3l (FB_current)
討論串 (同標題文章)
文章代碼(AID): #1F-ShV3l (FB_current)