Page MenuHomeFreeBSD

D22081.id63454.diff
No OneTemporary

D22081.id63454.diff

Index: sys/vm/uma_core.c
===================================================================
--- sys/vm/uma_core.c
+++ sys/vm/uma_core.c
@@ -4055,6 +4055,7 @@
struct uma_percpu_stat *ups, bool internal)
{
uma_zone_domain_t zdom;
+ uma_bucket_t bucket;
uma_cache_t cache;
int i;
@@ -4068,6 +4069,7 @@
uth->uth_fails = counter_u64_fetch(z->uz_fails);
uth->uth_sleeps = z->uz_sleeps;
uth->uth_xdomain = z->uz_xdomain;
+
/*
* While it is not normally safe to access the cache
* bucket pointers while not on the CPU that owns the
@@ -4081,15 +4083,15 @@
if (internal || CPU_ABSENT(i))
continue;
cache = &z->uz_cpu[i];
- if (cache->uc_allocbucket != NULL)
- ups[i].ups_cache_free +=
- cache->uc_allocbucket->ub_cnt;
- if (cache->uc_freebucket != NULL)
- ups[i].ups_cache_free +=
- cache->uc_freebucket->ub_cnt;
- if (cache->uc_crossbucket != NULL)
- ups[i].ups_cache_free +=
- cache->uc_crossbucket->ub_cnt;
+ bucket = (uma_bucket_t)atomic_load_ptr(&cache->uc_allocbucket);
+ if (bucket != NULL)
+ ups[i].ups_cache_free += bucket->ub_cnt;
+ bucket = (uma_bucket_t)atomic_load_ptr(&cache->uc_freebucket);
+ if (bucket != NULL)
+ ups[i].ups_cache_free += bucket->ub_cnt;
+ bucket = (uma_bucket_t)atomic_load_ptr(&cache->uc_crossbucket);
+ if (bucket != NULL)
+ ups[i].ups_cache_free += bucket->ub_cnt;
ups[i].ups_allocs = cache->uc_allocs;
ups[i].ups_frees = cache->uc_frees;
}

File Metadata

Mime Type
text/plain
Expires
Tue, Nov 25, 12:08 PM (3 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26132645
Default Alt Text
D22081.id63454.diff (1 KB)

Event Timeline