diff --git a/include/sys/vdev_raidz.h b/include/sys/vdev_raidz.h index eec5b17aa7c4..e8af9f3715f1 100644 --- a/include/sys/vdev_raidz.h +++ b/include/sys/vdev_raidz.h @@ -66,6 +66,9 @@ extern const zio_vsd_ops_t vdev_raidz_vsd_ops; /* * vdev_raidz_math interface */ +#if defined(__linux__) +extern const char *zfs_vdev_raidz_impl; +#endif void vdev_raidz_math_init(void); void vdev_raidz_math_fini(void); const struct raidz_impl_ops *vdev_raidz_math_get_ops(void); diff --git a/module/os/linux/zfs/vdev_disk.c b/module/os/linux/zfs/vdev_disk.c index 13c3013ee626..8f464bb9de9e 100644 --- a/module/os/linux/zfs/vdev_disk.c +++ b/module/os/linux/zfs/vdev_disk.c @@ -1637,15 +1637,12 @@ param_set_max_auto_ashift(const char *buf, zfs_kernel_param_t *kp) return (0); } -const char *zfs_vdev_raidz_impl = "TODO"; - int param_set_raidz_impl(const char *val, zfs_kernel_param_t *kp) { int error; error = vdev_raidz_impl_set(val); - return (error); } diff --git a/module/zfs/vdev_raidz_math.c b/module/zfs/vdev_raidz_math.c index 34a08f5c076f..6eb017c29c25 100644 --- a/module/zfs/vdev_raidz_math.c +++ b/module/zfs/vdev_raidz_math.c @@ -83,6 +83,9 @@ static boolean_t raidz_math_initialized = B_FALSE; static uint32_t zfs_vdev_raidz_impl_setting = IMPL_SCALAR; static uint32_t user_sel_impl = IMPL_FASTEST; +#if defined(__linux__) +const char *zfs_vdev_raidz_impl = "fastest"; +#endif /* Hold all supported implementations */ static size_t raidz_supp_impl_cnt = 0; @@ -628,6 +631,9 @@ vdev_raidz_impl_set(const char *val) atomic_swap_32(&zfs_vdev_raidz_impl_setting, impl); else atomic_swap_32(&user_sel_impl, impl); +#if defined(__linux__) + zfs_vdev_raidz_impl = raidz_supp_impl[i]->name; +#endif } return (err);