mirror_zfs/include/os/linux/spl/sys
Matthew Ahrens 270ece24b6
Revise SPL wrapper for shrinker callbacks
The SPL provides a wrapper for the kernel's shrinker callbacks, which
enables the ZFS code to interface with multiple versions of the shrinker
API's from different kernel versions.  Specifically, Linux kernels 3.0 -
3.11 has a single "combined" callback, and Linux kernels 3.12 and later
have two "split" callbacks.  The SPL provides a wrapper function so that
the ZFS code only needs to implement one version of the callbacks.

Currently the SPL's wrappers are designed such that the ZFS code
implements the older, "combined" callback.  There are a few downsides to
this approach:

* The general design within ZFS is for the latest Linux kernel to be
considered the "first class" API.

* The newer, "split" callback API is easier to understand, because each
callback has one purpose.

* The current wrappers do not completely abstract out the differing
API's, so ZFS code needs `#ifdef` code to handle the differing return
values required for different kernel versions.

This commit addresses these drawbacks by having the ZFS code provide the
latest, "split" callbacks, and the SPL provides a wrapping function for
the older, "combined" API.

Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
Closes #10502
2020-06-27 10:27:02 -07:00
..
acl.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
atomic.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
byteorder.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
callb.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
callo.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
cmn_err.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
condvar.h Disambiguate condvar API contract 2020-06-18 10:17:50 -07:00
console.h Mark functions as static 2020-06-18 12:20:38 -07:00
cred.h Linux compat: Minimum kernel version 3.10 2019-11-12 08:59:06 -08:00
ctype.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
debug.h Remove stale ASSERTV comment 2019-12-06 09:33:27 -08:00
disp.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
dkio.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
errno.h Move platform dependent errno aliases 2019-10-25 13:40:50 -07:00
fcntl.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
file.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
inttypes.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
isa_defs.h Correctly handle the x32 ABI 2020-05-28 10:28:20 -07:00
kmem_cache.h Use percpu_counter for obj_alloc counter of Linux-backed caches 2020-06-26 18:06:50 -07:00
kmem.h Move GFP flags kernel compatibility code 2020-06-08 16:33:46 -07:00
kstat.h Linux 5.6 compat: struct proc_ops 2020-02-07 11:03:53 -08:00
list.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
Makefile.am Drop unnecessary srcdir paths 2020-06-24 18:20:18 -07:00
mod_os.h Wrap Linux module macros 2019-11-01 10:41:03 -07:00
mutex.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
param.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
proc.h Fix zfs send progress reporting 2020-04-20 10:12:48 -07:00
processor.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
procfs_list.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
random.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
rwlock.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
shrinker.h Revise SPL wrapper for shrinker callbacks 2020-06-27 10:27:02 -07:00
sid.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
signal.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
simd.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
stat.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
strings.h Linux compat: Minimum kernel version 3.10 2019-11-12 08:59:06 -08:00
sunddi.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
sysmacros.h Move linux qsort def to platform header 2019-12-03 09:49:40 -08:00
systeminfo.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
taskq.h Improve performance of zio_taskq_member 2020-03-03 10:29:38 -08:00
thread.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
time.h Linux 5.6 compat: time_t 2020-02-27 09:31:02 -08:00
timer.h Linux compat: Minimum kernel version 3.10 2019-11-12 08:59:06 -08:00
trace_spl.h Add tracepoints for taskq entry lifetime events 2019-11-01 13:14:54 -07:00
trace_taskq.h Add tracepoints for taskq entry lifetime events 2019-11-01 13:14:54 -07:00
trace.h Add prototypes 2020-06-18 12:21:32 -07:00
tsd.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
types32.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
types.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
uio.h Add convenience wrappers for common uio usage 2020-06-14 10:09:55 -07:00
user.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vfs.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vmem.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vmsystm.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
vnode.h Add zfs_file_* interface, remove vnodes 2019-11-21 09:32:57 -08:00
wait.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
zmod.h Linux compat: Minimum kernel version 3.10 2019-11-12 08:59:06 -08:00
zone.h OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00