Re: mbuf LOR

From: Nate Lawson <nate_at_root.org>
Date: Wed, 9 Apr 2003 10:22:59 -0700 (PDT)
On Fri, 4 Apr 2003, Andrew Gallatin wrote:
> The following patch boots & passed the basic 'make -j16 buildworld'
> test on x86 SMP.  As I outlined before, I'm not certain if it is safe
> on all platforms.
> 
> Index: vm/uma_core.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/vm/uma_core.c,v
> retrieving revision 1.51
> diff -u -r1.51 uma_core.c
> --- vm/uma_core.c	26 Mar 2003 18:44:53 -0000	1.51
> +++ vm/uma_core.c	4 Apr 2003 15:11:34 -0000
> _at__at_ -703,10 +703,15 _at__at_
>  		wait &= ~M_ZERO;
>  
>  	if (booted || (zone->uz_flags & UMA_ZFLAG_PRIVALLOC)) {
> -		mtx_lock(&Giant);
> -		mem = zone->uz_allocf(zone, 
> -		    zone->uz_ppera * UMA_SLAB_SIZE, &flags, wait);
> -		mtx_unlock(&Giant);
> +		if ((wait & M_NOWAIT) == 0) {
> +			mtx_lock(&Giant);
> +			mem = zone->uz_allocf(zone, 
> +			    zone->uz_ppera * UMA_SLAB_SIZE, &flags, wait);
> +			mtx_unlock(&Giant);
> +		} else {
> +			mem = zone->uz_allocf(zone, 
> +			    zone->uz_ppera * UMA_SLAB_SIZE, &flags, wait);
> +		}
>  		if (mem == NULL) {
>  			ZONE_LOCK(zone);
>  			return (NULL);

I have been running with this patch for days with MPSAFE and it works
fine.  Will you commit it at some point?  Can the non-i386 platform heads
chime in?

-Nate
Received on Wed Apr 09 2003 - 08:22:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:03 UTC