summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Macy <[email protected]>2019-10-25 13:42:54 -0700
committerBrian Behlendorf <[email protected]>2019-10-25 13:42:54 -0700
commitc392c5aec06837aaf6d780fa6ba4dce5a84f6acb (patch)
tree417c387c0b5726a856e7f1a65f2c8c6f05846f91
parent1952fe0e2552d9b65b2db1e76c1a4a3f5ab0f27e (diff)
Move final zvol_remove_minors to common code
This logic is not platform dependent and should reside in the common code. Reviewed-by: Igor Kozhukhov <[email protected]> Reviewed-by: Jorgen Lundman <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Matt Macy <[email protected]> Closes #9505
-rw-r--r--module/os/linux/zfs/zvol_os.c10
-rw-r--r--module/zfs/zvol.c10
2 files changed, 10 insertions, 10 deletions
diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c
index 52725499a..f234b8544 100644
--- a/module/os/linux/zfs/zvol_os.c
+++ b/module/os/linux/zfs/zvol_os.c
@@ -1092,16 +1092,6 @@ zvol_init(void)
void
zvol_fini(void)
{
- zvol_remove_minors_impl(NULL);
-
- /*
- * The call to "zvol_remove_minors_impl" may dispatch entries to
- * the system_taskq, but it doesn't wait for those entires to
- * complete before it returns. Thus, we must wait for all of the
- * removals to finish, before we can continue.
- */
- taskq_wait_outstanding(system_taskq, 0);
-
zvol_fini_impl();
blk_unregister_region(MKDEV(zvol_major, 0), 1UL << MINORBITS);
unregister_blkdev(zvol_major, ZVOL_DRIVER);
diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c
index 19c20afe7..5006b6af8 100644
--- a/module/zfs/zvol.c
+++ b/module/zfs/zvol.c
@@ -1713,6 +1713,16 @@ zvol_init_impl(void)
void
zvol_fini_impl(void)
{
+ zvol_remove_minors_impl(NULL);
+
+ /*
+ * The call to "zvol_remove_minors_impl" may dispatch entries to
+ * the system_taskq, but it doesn't wait for those entires to
+ * complete before it returns. Thus, we must wait for all of the
+ * removals to finish, before we can continue.
+ */
+ taskq_wait_outstanding(system_taskq, 0);
+
kmem_free(zvol_htable, ZVOL_HT_SIZE * sizeof (struct hlist_head));
list_destroy(&zvol_state_list);
rw_destroy(&zvol_state_lock);