From e35704647e84c62c6a6017ead0b66b446010e4ff Mon Sep 17 00:00:00 2001 From: loli10K Date: Sun, 27 Oct 2019 00:22:19 +0200 Subject: Fix for ARC sysctls ignored at runtime This change leverage module_param_call() to run arc_tuning_update() immediately after the ARC tunable has been updated as suggested in cffa8372 code review. A simple test case is added to the ZFS Test Suite to prevent future regressions in functionality. Reviewed-by: Matt Macy Reviewed-by: Brian Behlendorf Signed-off-by: loli10K Closes #9487 Closes #9489 --- module/os/linux/zfs/arc_os.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'module/os/linux') diff --git a/module/os/linux/zfs/arc_os.c b/module/os/linux/zfs/arc_os.c index 696f671ab..c9db31096 100644 --- a/module/os/linux/zfs/arc_os.c +++ b/module/os/linux/zfs/arc_os.c @@ -357,6 +357,34 @@ arc_lowmem_fini(void) { spl_unregister_shrinker(&arc_shrinker); } + +int +param_set_arc_long(const char *buf, zfs_kernel_param_t *kp) +{ + int error; + + error = param_set_long(buf, kp); + if (error < 0) + return (SET_ERROR(error)); + + arc_tuning_update(); + + return (0); +} + +int +param_set_arc_int(const char *buf, zfs_kernel_param_t *kp) +{ + int error; + + error = param_set_int(buf, kp); + if (error < 0) + return (SET_ERROR(error)); + + arc_tuning_update(); + + return (0); +} #else /* _KERNEL */ int64_t arc_available_memory(void) -- cgit v1.2.3