summaryrefslogtreecommitdiff
path: root/usr/src/cmd/zfs/zfs_main.c
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2019-12-03 12:37:33 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2019-12-03 12:37:33 +0000
commit1e3614d0308cc53fe5630084af9ef8719a9c44a8 (patch)
treea783e76bfac006395d41cf5b28d40c568b075c78 /usr/src/cmd/zfs/zfs_main.c
parent98860832862cef20612fd5b10b324f5eba1b4015 (diff)
parentb8dc1b43d204b714c2fda8dd4efd67de0c671db6 (diff)
downloadillumos-joyent-1e3614d0308cc53fe5630084af9ef8719a9c44a8.tar.gz
[illumos-gate merge]
commit b8dc1b43d204b714c2fda8dd4efd67de0c671db6 11945 pool import performance regression due to repeated libshare initialization commit 69d9b1c5b0824b6e4feadaf289d68d945f0fbe6f 11984 libproc: passing argument 2 to restrict-qualified parameter aliases with argument 1 commit ec38b3f5fb92a39a55897ec0e3e4eeb0e84fefcc 12036 iscsi: zpool create pool fails to create label commit c54162e4540c6b4eb112c199658a34287d2dc971 12018 loader.efi: efipart needs better support detecting nested partitions
Diffstat (limited to 'usr/src/cmd/zfs/zfs_main.c')
-rw-r--r--usr/src/cmd/zfs/zfs_main.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/usr/src/cmd/zfs/zfs_main.c b/usr/src/cmd/zfs/zfs_main.c
index faf6b7c473..ef3f9155f3 100644
--- a/usr/src/cmd/zfs/zfs_main.c
+++ b/usr/src/cmd/zfs/zfs_main.c
@@ -6999,6 +6999,30 @@ unshare_unmount(int op, int argc, char **argv)
}
/*
+ * Initialize libshare SA_INIT_SHARE_API_SELECTIVE here
+ * to avoid unnecessary load/unload of the libshare API
+ * per shared dataset downstream.
+ */
+ if (op == OP_SHARE) {
+ get_all_cb_t dslist = { 0 };
+ get_all_datasets(&dslist, B_FALSE);
+
+ if (dslist.cb_used != 0) {
+ sa_init_selective_arg_t sharearg;
+ sharearg.zhandle_arr = dslist.cb_handles;
+ sharearg.zhandle_len = dslist.cb_used;
+ if ((ret = zfs_init_libshare_arg(g_zfs,
+ SA_INIT_SHARE_API_SELECTIVE, &sharearg)) !=
+ SA_OK) {
+ (void) fprintf(stderr, gettext(
+ "Could not initialize libshare, "
+ "%d"), ret);
+ return (1);
+ }
+ }
+ }
+
+ /*
* Walk the AVL tree in reverse, unmounting each filesystem and
* removing it from the AVL tree in the process.
*/