diff options
author | Alan Cox <alc@FreeBSD.org> | 2005-02-24 06:13:01 +0000 |
---|---|---|
committer | Alan Cox <alc@FreeBSD.org> | 2005-02-24 06:13:01 +0000 |
commit | b70458aec3cb39fd3ff16f5d626ef1226099e13d (patch) | |
tree | d7bf4501f7336616c54d03432b4ba091fd0f8467 /sys/vm | |
parent | 35da865ad7d257f6fcfaaf22f810d27db7ef0b54 (diff) | |
download | src-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.c | 19 |
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); |