From 37bf2264cc76c7c1708964b93d6fe55d9927bf60 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 25 Sep 2019 09:23:29 -0700 Subject: [PATCH] Add warning for zfs_vdev_elevator option removal Originally the zfs_vdev_elevator module option was added as a convenience so the requested elevator would be automatically set on the underlying block devices. At the time this was simple because the kernel provided an API function which did exactly this. This API was then removed in the Linux 4.12 kernel which prompted us to add compatibly code to set the elevator via a usermodehelper. While well intentioned this introduced a bug which could cause a system hang, that issue was subsequently fixed by commit 2a0d4188. In order to avoid future bugs in this area, and to simplify the code, this functionality is being deprecated. A console warning has been added to notify any existing consumers and the documentation updated accordingly. This option will remain for the lifetime of the 0.8.x series for compatibility but if planned to be phased out of master. Reviewed-by: Richard Laager Reviewed-by: loli10K Reviewed-by: Tony Hutter Signed-off-by: Brian Behlendorf Issue #8664 Closes #9317 --- man/man5/zfs-module-parameters.5 | 6 ++++-- module/zfs/vdev_disk.c | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/man/man5/zfs-module-parameters.5 b/man/man5/zfs-module-parameters.5 index 83d34025ab82..536eb1466bda 100644 --- a/man/man5/zfs-module-parameters.5 +++ b/man/man5/zfs-module-parameters.5 @@ -2804,8 +2804,10 @@ Default value: \fB32,768\fR. \fBzfs_vdev_scheduler\fR (charp) .ad .RS 12n -Set the Linux I/O scheduler on whole disk vdevs to this scheduler. Valid options -are noop, cfq, bfq & deadline +Set the Linux I/O scheduler on whole disk vdevs to this scheduler. This +option has been deprecated and will be removed in a future release. The +standard \fB/sys/block//queue/scheduler\fR interface should be used +to set a block device scheduler. .sp Default value: \fBnoop\fR. .RE diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c index 46437f21fb78..823a54c12e9d 100644 --- a/module/zfs/vdev_disk.c +++ b/module/zfs/vdev_disk.c @@ -931,7 +931,14 @@ param_set_vdev_scheduler(const char *val, zfs_kernel_param_t *kp) mutex_exit(&spa_namespace_lock); } - return (param_set_charp(val, kp)); + + int error = param_set_charp(val, kp); + if (error == 0) { + printk(KERN_INFO "The 'zfs_vdev_scheduler' module option " + "will be removed in a future release.\n"); + } + + return (error); } vdev_ops_t vdev_disk_ops = {