svn commit: r267750 - stable/10/sys/vm
Alexander Motin
mav at FreeBSD.org
Sun Jun 22 21:18:25 UTC 2014
Author: mav
Date: Sun Jun 22 21:18:24 2014
New Revision: 267750
URL: http://svnweb.freebsd.org/changeset/base/267750
Log:
MFC r267387:
Allocating new bucket for bucket zone, never take it from the zone itself,
since it will almost certanly fail. Take next bigger zone instead.
This situation should not happen with original bucket zones configuration:
"32 Bucket" zone uses "64 Bucket" and vice versa. But if "64 Bucket" zone
lock is congested, zone may grow its bucket size and start biting itself.
Modified:
stable/10/sys/vm/uma_core.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/vm/uma_core.c
==============================================================================
--- stable/10/sys/vm/uma_core.c Sun Jun 22 21:16:18 2014 (r267749)
+++ stable/10/sys/vm/uma_core.c Sun Jun 22 21:18:24 2014 (r267750)
@@ -381,6 +381,8 @@ bucket_alloc(uma_zone_t zone, void *udat
if ((uintptr_t)udata & UMA_ZFLAG_CACHEONLY)
flags |= M_NOVM;
ubz = bucket_zone_lookup(zone->uz_count);
+ if (ubz->ubz_zone == zone && (ubz + 1)->ubz_entries != 0)
+ ubz++;
bucket = uma_zalloc_arg(ubz->ubz_zone, udata, flags);
if (bucket) {
#ifdef INVARIANTS
More information about the svn-src-all
mailing list