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