mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 02:20:59 +03:00
3c42c9ed84
OS-specific code (e.g. under `module/os/linux`) does not need to share its code structure with any other operating systems. In particular, the ARC and kmem code need not be similar to the code in illumos, because we won't be syncing this OS-specific code between operating systems. For example, if/when illumos support is added to the common repo, we would add a file `module/os/illumos/zfs/arc_os.c` for the illumos versions of this code. Therefore, we can simplify the code in the OS-specific ARC and kmem routines. These changes do not impact system behavior, they are purely code cleanup. The changes are: Arenas are not used on Linux or FreeBSD (they are always `NULL`), so `heap_arena`, `zio_arena`, and `zio_alloc_arena` can be removed, along with code that uses them. In `arc_available_memory()`: * `desfree` is unused, remove it * rename `freemem` to avoid conflict with pre-existing `#define` * remove checks related to arenas * use units of bytes, rather than converting from bytes to pages and then back to bytes `SPL_KMEM_CACHE_REAP` is unused, remove it. `skc_reap` is unused, remove it. The `count` argument to `spl_kmem_cache_reap_now()` is unused, remove it. `vmem_size()` and associated type and macros are unused, remove them. In `arc_memory_throttle()`, use a less confusing variable name to store the result of `arc_free_memory()`. Reviewed-by: George Wilson <gwilson@delphix.com> Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ryan Moeller <ryan@ixsystems.com> Signed-off-by: Matthew Ahrens <mahrens@delphix.com> Closes #10499
91 lines
2.4 KiB
C
91 lines
2.4 KiB
C
/*
|
|
* Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC.
|
|
* Copyright (C) 2007 The Regents of the University of California.
|
|
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
|
|
* Written by Brian Behlendorf <behlendorf1@llnl.gov>.
|
|
* UCRL-CODE-235197
|
|
*
|
|
* This file is part of the SPL, Solaris Porting Layer.
|
|
* For details, see <http://zfsonlinux.org/>.
|
|
*
|
|
* The SPL is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* The SPL is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with the SPL. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <sys/debug.h>
|
|
#include <sys/vmem.h>
|
|
#include <sys/kmem_cache.h>
|
|
#include <sys/shrinker.h>
|
|
#include <linux/module.h>
|
|
|
|
/*
|
|
* Public vmem_alloc(), vmem_zalloc() and vmem_free() interfaces.
|
|
*/
|
|
void *
|
|
spl_vmem_alloc(size_t size, int flags, const char *func, int line)
|
|
{
|
|
ASSERT0(flags & ~KM_PUBLIC_MASK);
|
|
|
|
flags |= KM_VMEM;
|
|
|
|
#if !defined(DEBUG_KMEM)
|
|
return (spl_kmem_alloc_impl(size, flags, NUMA_NO_NODE));
|
|
#elif !defined(DEBUG_KMEM_TRACKING)
|
|
return (spl_kmem_alloc_debug(size, flags, NUMA_NO_NODE));
|
|
#else
|
|
return (spl_kmem_alloc_track(size, flags, func, line, NUMA_NO_NODE));
|
|
#endif
|
|
}
|
|
EXPORT_SYMBOL(spl_vmem_alloc);
|
|
|
|
void *
|
|
spl_vmem_zalloc(size_t size, int flags, const char *func, int line)
|
|
{
|
|
ASSERT0(flags & ~KM_PUBLIC_MASK);
|
|
|
|
flags |= (KM_VMEM | KM_ZERO);
|
|
|
|
#if !defined(DEBUG_KMEM)
|
|
return (spl_kmem_alloc_impl(size, flags, NUMA_NO_NODE));
|
|
#elif !defined(DEBUG_KMEM_TRACKING)
|
|
return (spl_kmem_alloc_debug(size, flags, NUMA_NO_NODE));
|
|
#else
|
|
return (spl_kmem_alloc_track(size, flags, func, line, NUMA_NO_NODE));
|
|
#endif
|
|
}
|
|
EXPORT_SYMBOL(spl_vmem_zalloc);
|
|
|
|
void
|
|
spl_vmem_free(const void *buf, size_t size)
|
|
{
|
|
#if !defined(DEBUG_KMEM)
|
|
return (spl_kmem_free_impl(buf, size));
|
|
#elif !defined(DEBUG_KMEM_TRACKING)
|
|
return (spl_kmem_free_debug(buf, size));
|
|
#else
|
|
return (spl_kmem_free_track(buf, size));
|
|
#endif
|
|
}
|
|
EXPORT_SYMBOL(spl_vmem_free);
|
|
|
|
int
|
|
spl_vmem_init(void)
|
|
{
|
|
return (0);
|
|
}
|
|
|
|
void
|
|
spl_vmem_fini(void)
|
|
{
|
|
}
|