diff options
author | Matthew Macy <[email protected]> | 2019-10-25 13:42:54 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-10-25 13:42:54 -0700 |
commit | c392c5aec06837aaf6d780fa6ba4dce5a84f6acb (patch) | |
tree | 417c387c0b5726a856e7f1a65f2c8c6f05846f91 | |
parent | 1952fe0e2552d9b65b2db1e76c1a4a3f5ab0f27e (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.c | 10 | ||||
-rw-r--r-- | module/zfs/zvol.c | 10 |
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); |