Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 08 Jul 2012 11:18:00 -0400
From:      Michael Butler <imb@protected-networks.net>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        current@freebsd.org
Subject:   Re: sleeping thread panic?
Message-ID:  <4FF9A4A8.5050903@protected-networks.net>
In-Reply-To: <20120708143113.GZ2338@deviant.kiev.zoral.com.ua>
References:  <4FF98128.6050607@protected-networks.net> <20120708133455.GX2338@deviant.kiev.zoral.com.ua> <4FF98F21.9060003@protected-networks.net> <20120708143113.GZ2338@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
-----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-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FF9A4A8.5050903>