From f7104ccd94e1b32caf5c2b974bb69a59747d3155 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Wed, 27 Nov 2013 20:16:18 +0000 Subject: [PATCH] Don't count bucket allocation failures for UMA zones as their own failures. There are good reasons for this to happen, such as recursion prevention, etc. and they are not fatal since buckets are just an optimization mechanism. Real bucket allocation failures are any way counted by the bucket zones themselves, and we don't need double accounting there. --- sys/vm/uma_core.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index dbb37c5877e8..322801e373c3 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -2509,7 +2509,7 @@ zone_alloc_bucket(uma_zone_t zone, void *udata, int flags) /* Don't wait for buckets, preserve caller's NOVM setting. */ bucket = bucket_alloc(zone, udata, M_NOWAIT | (flags & M_NOVM)); if (bucket == NULL) - goto out; + return (NULL); max = MIN(bucket->ub_entries, zone->uz_count); bucket->ub_cnt = zone->uz_import(zone->uz_arg, bucket->ub_bucket, @@ -2540,10 +2540,8 @@ zone_alloc_bucket(uma_zone_t zone, void *udata, int flags) } } -out: - if (bucket == NULL || bucket->ub_cnt == 0) { - if (bucket != NULL) - bucket_free(zone, bucket, udata); + if (bucket->ub_cnt == 0) { + bucket_free(zone, bucket, udata); atomic_add_long(&zone->uz_fails, 1); return (NULL); }