mbuf LOR
Nate Lawson
nate at root.org
Wed Apr 9 10:22:59 PDT 2003
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
> @@ -703,10 +703,15 @@
> 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
More information about the freebsd-current
mailing list