svn commit: r367573 - head/sys/vm
Jonathan T. Looney
jtl at FreeBSD.org
Tue Nov 10 18:12:09 UTC 2020
Author: jtl
Date: Tue Nov 10 18:12:09 2020
New Revision: 367573
URL: https://svnweb.freebsd.org/changeset/base/367573
Log:
When destroying a UMA zone which has a reserve (set with
uma_zone_reserve()), messages like the following appear on the console:
"Freed UMA keg (Test zone) was not empty (0 items). Lost 528 pages of
memory."
When keg_drain_domain() is draining the zone, it tries to keep the number
of items specified in the reservation. However, when we are destroying the
UMA zone, we do not need to keep those items. Therefore, when destroying a
non-secondary and non-cache zone, we should reset the keg reservation to 0
prior to draining the zone.
Reviewed by: markj
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D27129
Modified:
head/sys/vm/uma_core.c
Modified: head/sys/vm/uma_core.c
==============================================================================
--- head/sys/vm/uma_core.c Tue Nov 10 18:10:50 2020 (r367572)
+++ head/sys/vm/uma_core.c Tue Nov 10 18:12:09 2020 (r367573)
@@ -2791,6 +2791,10 @@ zone_dtor(void *arg, int size, void *udata)
rw_wlock(&uma_rwlock);
LIST_REMOVE(zone, uz_link);
rw_wunlock(&uma_rwlock);
+ if ((zone->uz_flags & (UMA_ZONE_SECONDARY | UMA_ZFLAG_CACHE)) == 0) {
+ keg = zone->uz_keg;
+ keg->uk_reserve = 0;
+ }
zone_reclaim(zone, M_WAITOK, true);
/*
More information about the svn-src-all
mailing list