aboutsummaryrefslogtreecommitdiff
path: root/sys/vm
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2005-02-24 06:13:01 +0000
committerAlan Cox <alc@FreeBSD.org>2005-02-24 06:13:01 +0000
commitb70458aec3cb39fd3ff16f5d626ef1226099e13d (patch)
treed7bf4501f7336616c54d03432b4ba091fd0f8467 /sys/vm
parent35da865ad7d257f6fcfaaf22f810d27db7ef0b54 (diff)
downloadsrc-b70458aec3cb39fd3ff16f5d626ef1226099e13d.tar.gz
src-b70458aec3cb39fd3ff16f5d626ef1226099e13d.zip
Revert the first part of revision 1.114 and modify the second part. On
architectures implementing uma_small_alloc() pages do not necessarily belong to the kmem object.
Notes
Notes: svn path=/head/; revision=142367
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/uma_core.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c
index 5f311b8241fd..ad0138a0bb64 100644
--- a/sys/vm/uma_core.c
+++ b/sys/vm/uma_core.c
@@ -754,9 +754,15 @@ finished:
if ((keg->uk_flags & UMA_ZONE_MALLOC) ||
(keg->uk_flags & UMA_ZONE_REFCNT)) {
+ vm_object_t obj;
+
+ if (flags & UMA_SLAB_KMEM)
+ obj = kmem_object;
+ else
+ obj = NULL;
for (i = 0; i < keg->uk_ppera; i++)
vsetobj((vm_offset_t)mem + (i * PAGE_SIZE),
- kmem_object);
+ obj);
}
if (keg->uk_flags & UMA_ZONE_OFFPAGE)
uma_zfree_internal(keg->uk_slabzone, slab, NULL,
@@ -866,10 +872,17 @@ slab_zalloc(uma_zone_t zone, int wait)
keg->uk_size);
}
if ((keg->uk_flags & UMA_ZONE_MALLOC) ||
- (keg->uk_flags & UMA_ZONE_REFCNT))
+ (keg->uk_flags & UMA_ZONE_REFCNT)) {
+ vm_object_t obj;
+
+ if (flags & UMA_SLAB_KMEM)
+ obj = kmem_object;
+ else
+ obj = NULL;
for (i = 0; i < keg->uk_ppera; i++)
vsetobj((vm_offset_t)mem +
- (i * PAGE_SIZE), kmem_object);
+ (i * PAGE_SIZE), obj);
+ }
if (keg->uk_flags & UMA_ZONE_OFFPAGE)
uma_zfree_internal(keg->uk_slabzone, slab,
NULL, SKIP_NONE);