1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00

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.
This commit is contained in:
Alexander Motin 2013-11-27 20:16:18 +00:00
parent e8a720fe60
commit f7104ccd94
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=258691

View File

@ -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);
}