Skip to content

Commit

Permalink
Add warning for zfs_vdev_elevator option removal
Browse files Browse the repository at this point in the history
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 2a0d418.

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.

Signed-off-by: Brian Behlendorf <[email protected]>
Issue openzfs#8664
Issue openzfs#9317
  • Loading branch information
behlendorf committed Sep 23, 2019
1 parent 73d7820 commit c1cdb9e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
6 changes: 4 additions & 2 deletions man/man5/zfs-module-parameters.5
Original file line number Diff line number Diff line change
Expand Up @@ -3188,8 +3188,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/<block>/queue/scheduler\fR interface should be used
to set a block devices scheduler.
.sp
Default value: \fBnoop\fR.
.RE
Expand Down
9 changes: 8 additions & 1 deletion module/os/linux/zfs/vdev_disk.c
Original file line number Diff line number Diff line change
Expand Up @@ -930,7 +930,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 = {
Expand Down

0 comments on commit c1cdb9e

Please sign in to comment.