Make M_ZERO flag work correctly on UMA_ZONE_PCPU zones.
Sponsored by: Nginx, Inc.
This commit is contained in:
parent
9188e408cc
commit
48343a2f34
@ -267,6 +267,7 @@ static uma_keg_t uma_kcreate(uma_zone_t zone, size_t size, uma_init uminit,
|
|||||||
uma_fini fini, int align, uint32_t flags);
|
uma_fini fini, int align, uint32_t flags);
|
||||||
static int zone_import(uma_zone_t zone, void **bucket, int max, int flags);
|
static int zone_import(uma_zone_t zone, void **bucket, int max, int flags);
|
||||||
static void zone_release(uma_zone_t zone, void **bucket, int cnt);
|
static void zone_release(uma_zone_t zone, void **bucket, int cnt);
|
||||||
|
static void uma_zero_item(void *item, uma_zone_t zone);
|
||||||
|
|
||||||
void uma_print_zone(uma_zone_t);
|
void uma_print_zone(uma_zone_t);
|
||||||
void uma_print_stats(void);
|
void uma_print_stats(void);
|
||||||
@ -2170,7 +2171,7 @@ zalloc_start:
|
|||||||
uma_dbg_alloc(zone, NULL, item);
|
uma_dbg_alloc(zone, NULL, item);
|
||||||
#endif
|
#endif
|
||||||
if (flags & M_ZERO)
|
if (flags & M_ZERO)
|
||||||
bzero(item, zone->uz_size);
|
uma_zero_item(item, zone);
|
||||||
return (item);
|
return (item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2620,7 +2621,7 @@ zone_alloc_item(uma_zone_t zone, void *udata, int flags)
|
|||||||
uma_dbg_alloc(zone, NULL, item);
|
uma_dbg_alloc(zone, NULL, item);
|
||||||
#endif
|
#endif
|
||||||
if (flags & M_ZERO)
|
if (flags & M_ZERO)
|
||||||
bzero(item, zone->uz_size);
|
uma_zero_item(item, zone);
|
||||||
|
|
||||||
return (item);
|
return (item);
|
||||||
|
|
||||||
@ -3237,6 +3238,17 @@ uma_large_free(uma_slab_t slab)
|
|||||||
zone_free_item(slabzone, slab, NULL, SKIP_NONE);
|
zone_free_item(slabzone, slab, NULL, SKIP_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
uma_zero_item(void *item, uma_zone_t zone)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (zone->uz_flags & UMA_ZONE_PCPU) {
|
||||||
|
for (int i = 0; i < mp_ncpus; i++)
|
||||||
|
bzero(zpcpu_get_cpu(item, i), zone->uz_size);
|
||||||
|
} else
|
||||||
|
bzero(item, zone->uz_size);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
uma_print_stats(void)
|
uma_print_stats(void)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user