diff options
author | Steven Hartland <smh@FreeBSD.org> | 2014-08-30 21:44:32 +0000 |
---|---|---|
committer | Steven Hartland <smh@FreeBSD.org> | 2014-08-30 21:44:32 +0000 |
commit | 92ac3eb59fea40ff57af604abd90d6520919cba6 (patch) | |
tree | b6a7d41730922780a03b947519ff51ff575c037e /sys/cddl/compat | |
parent | 65d495a87e71a5859b8b5adef7614d7027396948 (diff) | |
download | src-92ac3eb59fea40ff57af604abd90d6520919cba6.tar.gz src-92ac3eb59fea40ff57af604abd90d6520919cba6.zip |
Ensure that ZFS ARC free memory checks include cached pages
Also restore kmem_used() check for i386 as it has KVA limits that the raw
page counts above don't consider
PR: 187594
Reviewed by: peter
X-MFC-With: r270759
Review: D700
Sponsored by: Multiplay
Notes
Notes:
svn path=/head/; revision=270861
Diffstat (limited to 'sys/cddl/compat')
-rw-r--r-- | sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c | 9 | ||||
-rw-r--r-- | sys/cddl/compat/opensolaris/sys/kmem.h | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c b/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c index 10377cd29b7f..fd8798d2e16a 100644 --- a/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c +++ b/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c @@ -152,7 +152,7 @@ u_int kmem_free_count(void) { - return (vm_cnt.v_free_count); + return (vm_cnt.v_free_count + vm_cnt.v_cache_count); } u_int @@ -169,6 +169,13 @@ kmem_size(void) return (kmem_size_val); } +uint64_t +kmem_used(void) +{ + + return (vmem_size(kmem_arena, VMEM_ALLOC)); +} + static int kmem_std_constructor(void *mem, int size __unused, void *private, int flags) { diff --git a/sys/cddl/compat/opensolaris/sys/kmem.h b/sys/cddl/compat/opensolaris/sys/kmem.h index af6cec52cf91..1879ba44a4b3 100644 --- a/sys/cddl/compat/opensolaris/sys/kmem.h +++ b/sys/cddl/compat/opensolaris/sys/kmem.h @@ -66,6 +66,7 @@ typedef struct kmem_cache { void *zfs_kmem_alloc(size_t size, int kmflags); void zfs_kmem_free(void *buf, size_t size); uint64_t kmem_size(void); +uint64_t kmem_used(void); u_int kmem_page_count(void); /* |