Print this page
blah
XXX - fix get_all_datasets call
XXX - fix get_all_datasets call

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/zfs/zfs_main.c
          +++ new/usr/src/cmd/zfs/zfs_main.c
↓ open down ↓ 6846 lines elided ↑ open up ↑
6847 6847                                  free(node);
6848 6848                          }
6849 6849                  }
6850 6850  
6851 6851                  /*
6852 6852                   * Initilialize libshare SA_INIT_SHARE_API_SELECTIVE here
6853 6853                   * to avoid unneccesary load/unload of the libshare API
6854 6854                   * per shared dataset downstream.
6855 6855                   */
6856 6856                  if (op == OP_SHARE) {
6857      -                        zfs_handle_t **dslist = NULL;
6858      -                        size_t count = 0;
6859      -                        get_all_datasets(&dslist, &count, B_FALSE);
     6857 +                        get_all_cb_t dslist = { 0 };
     6858 +                        get_all_datasets(&dslist, B_FALSE);
6860 6859  
6861      -                        if (count > 0) {
     6860 +                        if (dslist.cb_used != 0) {
6862 6861                                  sa_init_selective_arg_t sharearg;
6863      -                                sharearg.zhandle_arr = dslist;
6864      -                                sharearg.zhandle_len = count;
6865      -                                if ((ret = zfs_init_libshare_arg(
6866      -                                    zfs_get_handle(dslist[0]),
6867      -                                    SA_INIT_SHARE_API_SELECTIVE, &sharearg))
6868      -                                    != SA_OK) {
     6862 +                                sharearg.zhandle_arr = dslist.cb_handles;
     6863 +                                sharearg.zhandle_len = dslist.cb_used;
     6864 +                                if ((ret = zfs_init_libshare_arg(g_zfs,
     6865 +                                    SA_INIT_SHARE_API_SELECTIVE, &sharearg)) !=
     6866 +                                        SA_OK) {
6869 6867                                          (void) fprintf(stderr, gettext(
6870      -                                            "Could not initialize libshare,"
     6868 +                                            "Could not initialize libshare, "
6871 6869                                              "%d"), ret);
6872      -                                        return (1);
     6870 +                                        return (ret);
6873 6871                                  }
6874 6872                          }
6875 6873                  }
6876 6874  
6877 6875                  /*
6878 6876                   * Walk the AVL tree in reverse, unmounting each filesystem and
6879 6877                   * removing it from the AVL tree in the process.
6880 6878                   */
6881 6879                  if ((walk = uu_avl_walk_start(tree,
6882 6880                      UU_WALK_REVERSE | UU_WALK_ROBUST)) == NULL)
↓ open down ↓ 1242 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX