Lines Matching refs:zc
276 static int zfs_ioc_userspace_upgrade(zfs_cmd_t *zc);
277 static int zfs_ioc_id_quota_upgrade(zfs_cmd_t *zc);
294 history_str_get(zfs_cmd_t *zc) in history_str_get() argument
298 if (zc->zc_history == 0) in history_str_get()
302 if (copyinstr((void *)(uintptr_t)zc->zc_history, in history_str_get()
356 zfs_log_history(zfs_cmd_t *zc) in zfs_log_history() argument
361 if ((buf = history_str_get(zc)) == NULL) in zfs_log_history()
364 if (spa_open(zc->zc_name, &spa, FTAG) == 0) { in zfs_log_history()
377 zfs_secpolicy_none(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_none() argument
379 (void) zc, (void) innvl, (void) cr; in zfs_secpolicy_none()
388 zfs_secpolicy_read(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_read() argument
392 zone_dataset_visible(zc->zc_name, NULL)) in zfs_secpolicy_read()
660 zfs_secpolicy_set_fsacl(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_set_fsacl() argument
667 return (zfs_dozonecheck(zc->zc_name, cr)); in zfs_secpolicy_set_fsacl()
671 zfs_secpolicy_rollback(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_rollback() argument
674 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_rollback()
679 zfs_secpolicy_send(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_send() argument
691 cp = strchr(zc->zc_name, '@'); in zfs_secpolicy_send()
694 error = dsl_pool_hold(zc->zc_name, FTAG, &dp); in zfs_secpolicy_send()
698 error = dsl_dataset_hold_obj(dp, zc->zc_sendobj, FTAG, &ds); in zfs_secpolicy_send()
704 dsl_dataset_name(ds, zc->zc_name); in zfs_secpolicy_send()
706 error = zfs_secpolicy_write_perms_ds(zc->zc_name, ds, in zfs_secpolicy_send()
715 zfs_secpolicy_send_new(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_send_new() argument
718 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_send_new()
723 zfs_secpolicy_share(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_share() argument
725 (void) zc, (void) innvl, (void) cr; in zfs_secpolicy_share()
730 zfs_secpolicy_smb_acl(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_smb_acl() argument
732 (void) zc, (void) innvl, (void) cr; in zfs_secpolicy_smb_acl()
771 zfs_secpolicy_destroy(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_destroy() argument
774 return (zfs_secpolicy_destroy_perms(zc->zc_name, cr)); in zfs_secpolicy_destroy()
782 zfs_secpolicy_destroy_snaps(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_destroy_snaps() argument
784 (void) zc; in zfs_secpolicy_destroy_snaps()
844 zfs_secpolicy_rename(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_rename() argument
847 return (zfs_secpolicy_rename_perms(zc->zc_name, zc->zc_value, cr)); in zfs_secpolicy_rename()
851 zfs_secpolicy_promote(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_promote() argument
858 error = zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_promote()
863 error = dsl_pool_hold(zc->zc_name, FTAG, &dp); in zfs_secpolicy_promote()
867 error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &clone); in zfs_secpolicy_promote()
883 error = zfs_secpolicy_write_perms_ds(zc->zc_name, clone, in zfs_secpolicy_promote()
899 zfs_secpolicy_recv(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_recv() argument
908 if ((error = zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_recv()
910 if (zc->zc_guid || nvlist_exists(innvl, "force")) in zfs_secpolicy_recv()
912 if ((error = zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_recv()
917 if ((error = zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_recv()
921 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_recv()
936 zfs_secpolicy_snapshot(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_snapshot() argument
938 (void) zc; in zfs_secpolicy_snapshot()
967 zfs_secpolicy_bookmark(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_bookmark() argument
969 (void) zc; in zfs_secpolicy_bookmark()
992 zfs_secpolicy_destroy_bookmarks(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_destroy_bookmarks() argument
994 (void) zc; in zfs_secpolicy_destroy_bookmarks()
1033 zfs_secpolicy_log_history(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_log_history() argument
1035 (void) zc, (void) innvl, (void) cr; in zfs_secpolicy_log_history()
1046 zfs_secpolicy_create_clone(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_create_clone() argument
1052 if ((error = zfs_get_parent(zc->zc_name, parentname, in zfs_secpolicy_create_clone()
1074 zfs_secpolicy_config(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_config() argument
1076 (void) zc, (void) innvl; in zfs_secpolicy_config()
1088 zfs_secpolicy_diff(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_diff() argument
1096 error = zfs_secpolicy_write_perms(zc->zc_name, ZFS_DELEG_PERM_DIFF, cr); in zfs_secpolicy_diff()
1104 zfs_secpolicy_inject(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_inject() argument
1106 (void) zc, (void) innvl; in zfs_secpolicy_inject()
1111 zfs_secpolicy_inherit_prop(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_inherit_prop() argument
1114 zfs_prop_t prop = zfs_name_to_prop(zc->zc_value); in zfs_secpolicy_inherit_prop()
1117 if (!zfs_prop_user(zc->zc_value)) in zfs_secpolicy_inherit_prop()
1119 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_inherit_prop()
1122 return (zfs_secpolicy_setprop(zc->zc_name, prop, in zfs_secpolicy_inherit_prop()
1128 zfs_secpolicy_userspace_one(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_userspace_one() argument
1130 int err = zfs_secpolicy_read(zc, innvl, cr); in zfs_secpolicy_userspace_one()
1134 if (zc->zc_objset_type >= ZFS_NUM_USERQUOTA_PROPS) in zfs_secpolicy_userspace_one()
1137 if (zc->zc_value[0] == 0) { in zfs_secpolicy_userspace_one()
1142 if (zc->zc_objset_type == ZFS_PROP_USERUSED || in zfs_secpolicy_userspace_one()
1143 zc->zc_objset_type == ZFS_PROP_USERQUOTA || in zfs_secpolicy_userspace_one()
1144 zc->zc_objset_type == ZFS_PROP_USEROBJUSED || in zfs_secpolicy_userspace_one()
1145 zc->zc_objset_type == ZFS_PROP_USEROBJQUOTA) { in zfs_secpolicy_userspace_one()
1146 if (zc->zc_guid == crgetuid(cr)) in zfs_secpolicy_userspace_one()
1148 } else if (zc->zc_objset_type == ZFS_PROP_GROUPUSED || in zfs_secpolicy_userspace_one()
1149 zc->zc_objset_type == ZFS_PROP_GROUPQUOTA || in zfs_secpolicy_userspace_one()
1150 zc->zc_objset_type == ZFS_PROP_GROUPOBJUSED || in zfs_secpolicy_userspace_one()
1151 zc->zc_objset_type == ZFS_PROP_GROUPOBJQUOTA) { in zfs_secpolicy_userspace_one()
1152 if (groupmember(zc->zc_guid, cr)) in zfs_secpolicy_userspace_one()
1158 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_userspace_one()
1159 userquota_perms[zc->zc_objset_type], cr)); in zfs_secpolicy_userspace_one()
1163 zfs_secpolicy_userspace_many(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_userspace_many() argument
1165 int err = zfs_secpolicy_read(zc, innvl, cr); in zfs_secpolicy_userspace_many()
1169 if (zc->zc_objset_type >= ZFS_NUM_USERQUOTA_PROPS) in zfs_secpolicy_userspace_many()
1172 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_userspace_many()
1173 userquota_perms[zc->zc_objset_type], cr)); in zfs_secpolicy_userspace_many()
1177 zfs_secpolicy_userspace_upgrade(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_userspace_upgrade() argument
1180 return (zfs_secpolicy_setprop(zc->zc_name, ZFS_PROP_VERSION, in zfs_secpolicy_userspace_upgrade()
1185 zfs_secpolicy_hold(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_hold() argument
1187 (void) zc; in zfs_secpolicy_hold()
1209 zfs_secpolicy_release(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_release() argument
1211 (void) zc; in zfs_secpolicy_release()
1233 zfs_secpolicy_tmp_snapshot(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_tmp_snapshot() argument
1242 if (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_tmp_snapshot()
1246 error = zfs_secpolicy_snapshot_perms(zc->zc_name, cr); in zfs_secpolicy_tmp_snapshot()
1250 error = zfs_secpolicy_hold(zc, innvl, cr); in zfs_secpolicy_tmp_snapshot()
1252 error = zfs_secpolicy_release(zc, innvl, cr); in zfs_secpolicy_tmp_snapshot()
1254 error = zfs_secpolicy_destroy(zc, innvl, cr); in zfs_secpolicy_tmp_snapshot()
1260 zfs_secpolicy_load_key(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_load_key() argument
1262 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_load_key()
1267 zfs_secpolicy_change_key(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr) in zfs_secpolicy_change_key() argument
1269 return (zfs_secpolicy_write_perms(zc->zc_name, in zfs_secpolicy_change_key()
1347 put_nvlist(zfs_cmd_t *zc, nvlist_t *nvl) in put_nvlist() argument
1355 if (size > zc->zc_nvlist_dst_size) { in put_nvlist()
1359 if (ddi_copyout(packed, (void *)(uintptr_t)zc->zc_nvlist_dst, in put_nvlist()
1360 size, zc->zc_iflags) != 0) in put_nvlist()
1365 zc->zc_nvlist_dst_size = size; in put_nvlist()
1366 zc->zc_nvlist_dst_filled = B_TRUE; in put_nvlist()
1447 zfs_ioc_pool_create(zfs_cmd_t *zc) in zfs_ioc_pool_create() argument
1454 const char *spa_name = zc->zc_name; in zfs_ioc_pool_create()
1457 if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, in zfs_ioc_pool_create()
1458 zc->zc_iflags, &config))) in zfs_ioc_pool_create()
1461 if (zc->zc_nvlist_src_size != 0 && (error = in zfs_ioc_pool_create()
1462 get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_pool_create()
1463 zc->zc_iflags, &props))) { in zfs_ioc_pool_create()
1507 error = spa_create(zc->zc_name, config, props, zplprops, dcp); in zfs_ioc_pool_create()
1529 zfs_ioc_pool_destroy(zfs_cmd_t *zc) in zfs_ioc_pool_destroy() argument
1532 zfs_log_history(zc); in zfs_ioc_pool_destroy()
1533 error = spa_destroy(zc->zc_name); in zfs_ioc_pool_destroy()
1539 zfs_ioc_pool_import(zfs_cmd_t *zc) in zfs_ioc_pool_import() argument
1545 if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, in zfs_ioc_pool_import()
1546 zc->zc_iflags, &config)) != 0) in zfs_ioc_pool_import()
1549 if (zc->zc_nvlist_src_size != 0 && (error = in zfs_ioc_pool_import()
1550 get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_pool_import()
1551 zc->zc_iflags, &props))) { in zfs_ioc_pool_import()
1557 guid != zc->zc_guid) in zfs_ioc_pool_import()
1560 error = spa_import(zc->zc_name, config, props, zc->zc_cookie); in zfs_ioc_pool_import()
1562 if (zc->zc_nvlist_dst != 0) { in zfs_ioc_pool_import()
1565 if ((err = put_nvlist(zc, config)) != 0) in zfs_ioc_pool_import()
1576 zfs_ioc_pool_export(zfs_cmd_t *zc) in zfs_ioc_pool_export() argument
1579 boolean_t force = (boolean_t)zc->zc_cookie; in zfs_ioc_pool_export()
1580 boolean_t hardforce = (boolean_t)zc->zc_guid; in zfs_ioc_pool_export()
1582 zfs_log_history(zc); in zfs_ioc_pool_export()
1583 error = spa_export(zc->zc_name, NULL, force, hardforce); in zfs_ioc_pool_export()
1589 zfs_ioc_pool_configs(zfs_cmd_t *zc) in zfs_ioc_pool_configs() argument
1594 error = spa_all_configs(&zc->zc_cookie, &configs); in zfs_ioc_pool_configs()
1598 error = put_nvlist(zc, configs); in zfs_ioc_pool_configs()
1615 zfs_ioc_pool_stats(zfs_cmd_t *zc) in zfs_ioc_pool_stats() argument
1621 error = spa_get_stats(zc->zc_name, &config, zc->zc_value, in zfs_ioc_pool_stats()
1622 sizeof (zc->zc_value)); in zfs_ioc_pool_stats()
1625 ret = put_nvlist(zc, config); in zfs_ioc_pool_stats()
1633 zc->zc_cookie = error; in zfs_ioc_pool_stats()
1646 zfs_ioc_pool_tryimport(zfs_cmd_t *zc) in zfs_ioc_pool_tryimport() argument
1651 if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, in zfs_ioc_pool_tryimport()
1652 zc->zc_iflags, &tryconfig)) != 0) in zfs_ioc_pool_tryimport()
1662 error = put_nvlist(zc, config); in zfs_ioc_pool_tryimport()
1675 zfs_ioc_pool_scan(zfs_cmd_t *zc) in zfs_ioc_pool_scan() argument
1680 if (zc->zc_flags >= POOL_SCRUB_FLAGS_END) in zfs_ioc_pool_scan()
1683 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_pool_scan()
1686 if (zc->zc_flags == POOL_SCRUB_PAUSE) in zfs_ioc_pool_scan()
1688 else if (zc->zc_cookie == POOL_SCAN_NONE) in zfs_ioc_pool_scan()
1691 error = spa_scan(spa, zc->zc_cookie); in zfs_ioc_pool_scan()
1743 zfs_ioc_pool_freeze(zfs_cmd_t *zc) in zfs_ioc_pool_freeze() argument
1748 error = spa_open(zc->zc_name, &spa, FTAG); in zfs_ioc_pool_freeze()
1757 zfs_ioc_pool_upgrade(zfs_cmd_t *zc) in zfs_ioc_pool_upgrade() argument
1762 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_pool_upgrade()
1765 if (zc->zc_cookie < spa_version(spa) || in zfs_ioc_pool_upgrade()
1766 !SPA_VERSION_IS_SUPPORTED(zc->zc_cookie)) { in zfs_ioc_pool_upgrade()
1771 spa_upgrade(spa, zc->zc_cookie); in zfs_ioc_pool_upgrade()
1778 zfs_ioc_pool_get_history(zfs_cmd_t *zc) in zfs_ioc_pool_get_history() argument
1785 if ((size = zc->zc_history_len) == 0) in zfs_ioc_pool_get_history()
1788 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_pool_get_history()
1797 if ((error = spa_history_get(spa, &zc->zc_history_offset, in zfs_ioc_pool_get_history()
1798 &zc->zc_history_len, hist_buf)) == 0) { in zfs_ioc_pool_get_history()
1800 (void *)(uintptr_t)zc->zc_history, in zfs_ioc_pool_get_history()
1801 zc->zc_history_len, zc->zc_iflags); in zfs_ioc_pool_get_history()
1815 zfs_ioc_pool_reguid(zfs_cmd_t *zc) in zfs_ioc_pool_reguid() argument
1823 if (zc->zc_nvlist_src_size != 0) { in zfs_ioc_pool_reguid()
1824 error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_pool_reguid()
1825 zc->zc_iflags, &props); in zfs_ioc_pool_reguid()
1838 error = spa_open(zc->zc_name, &spa, FTAG); in zfs_ioc_pool_reguid()
1852 zfs_ioc_dsobj_to_dsname(zfs_cmd_t *zc) in zfs_ioc_dsobj_to_dsname() argument
1854 return (dsl_dsobj_to_dsname(zc->zc_name, zc->zc_obj, zc->zc_value)); in zfs_ioc_dsobj_to_dsname()
1866 zfs_ioc_obj_to_path(zfs_cmd_t *zc) in zfs_ioc_obj_to_path() argument
1872 if ((error = dmu_objset_hold_flags(zc->zc_name, B_TRUE, in zfs_ioc_obj_to_path()
1879 error = zfs_obj_to_path(os, zc->zc_obj, zc->zc_value, in zfs_ioc_obj_to_path()
1880 sizeof (zc->zc_value)); in zfs_ioc_obj_to_path()
1896 zfs_ioc_obj_to_stats(zfs_cmd_t *zc) in zfs_ioc_obj_to_stats() argument
1902 if ((error = dmu_objset_hold_flags(zc->zc_name, B_TRUE, in zfs_ioc_obj_to_stats()
1909 error = zfs_obj_to_stats(os, zc->zc_obj, &zc->zc_stat, zc->zc_value, in zfs_ioc_obj_to_stats()
1910 sizeof (zc->zc_value)); in zfs_ioc_obj_to_stats()
1917 zfs_ioc_vdev_add(zfs_cmd_t *zc) in zfs_ioc_vdev_add() argument
1923 error = spa_open(zc->zc_name, &spa, FTAG); in zfs_ioc_vdev_add()
1927 error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, in zfs_ioc_vdev_add()
1928 zc->zc_iflags, &config); in zfs_ioc_vdev_add()
1930 error = spa_vdev_add(spa, config, zc->zc_flags); in zfs_ioc_vdev_add()
1944 zfs_ioc_vdev_remove(zfs_cmd_t *zc) in zfs_ioc_vdev_remove() argument
1949 error = spa_open(zc->zc_name, &spa, FTAG); in zfs_ioc_vdev_remove()
1952 if (zc->zc_cookie != 0) { in zfs_ioc_vdev_remove()
1955 error = spa_vdev_remove(spa, zc->zc_guid, B_FALSE); in zfs_ioc_vdev_remove()
1962 zfs_ioc_vdev_set_state(zfs_cmd_t *zc) in zfs_ioc_vdev_set_state() argument
1968 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_vdev_set_state()
1970 switch (zc->zc_cookie) { in zfs_ioc_vdev_set_state()
1972 error = vdev_online(spa, zc->zc_guid, zc->zc_obj, &newstate); in zfs_ioc_vdev_set_state()
1976 error = vdev_offline(spa, zc->zc_guid, zc->zc_obj); in zfs_ioc_vdev_set_state()
1980 if (zc->zc_obj != VDEV_AUX_ERR_EXCEEDED && in zfs_ioc_vdev_set_state()
1981 zc->zc_obj != VDEV_AUX_EXTERNAL && in zfs_ioc_vdev_set_state()
1982 zc->zc_obj != VDEV_AUX_EXTERNAL_PERSIST) in zfs_ioc_vdev_set_state()
1983 zc->zc_obj = VDEV_AUX_ERR_EXCEEDED; in zfs_ioc_vdev_set_state()
1985 error = vdev_fault(spa, zc->zc_guid, zc->zc_obj); in zfs_ioc_vdev_set_state()
1989 if (zc->zc_obj != VDEV_AUX_ERR_EXCEEDED && in zfs_ioc_vdev_set_state()
1990 zc->zc_obj != VDEV_AUX_EXTERNAL) in zfs_ioc_vdev_set_state()
1991 zc->zc_obj = VDEV_AUX_ERR_EXCEEDED; in zfs_ioc_vdev_set_state()
1993 error = vdev_degrade(spa, zc->zc_guid, zc->zc_obj); in zfs_ioc_vdev_set_state()
1997 error = vdev_remove_wanted(spa, zc->zc_guid); in zfs_ioc_vdev_set_state()
2003 zc->zc_cookie = newstate; in zfs_ioc_vdev_set_state()
2009 zfs_ioc_vdev_attach(zfs_cmd_t *zc) in zfs_ioc_vdev_attach() argument
2013 int replacing = zc->zc_cookie; in zfs_ioc_vdev_attach()
2014 int rebuild = zc->zc_simple; in zfs_ioc_vdev_attach()
2017 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_vdev_attach()
2020 if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, in zfs_ioc_vdev_attach()
2021 zc->zc_iflags, &config)) == 0) { in zfs_ioc_vdev_attach()
2022 error = spa_vdev_attach(spa, zc->zc_guid, config, replacing, in zfs_ioc_vdev_attach()
2032 zfs_ioc_vdev_detach(zfs_cmd_t *zc) in zfs_ioc_vdev_detach() argument
2037 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_vdev_detach()
2040 error = spa_vdev_detach(spa, zc->zc_guid, 0, B_FALSE); in zfs_ioc_vdev_detach()
2047 zfs_ioc_vdev_split(zfs_cmd_t *zc) in zfs_ioc_vdev_split() argument
2052 boolean_t exp = !!(zc->zc_cookie & ZPOOL_EXPORT_AFTER_SPLIT); in zfs_ioc_vdev_split()
2054 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_vdev_split()
2057 if ((error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, in zfs_ioc_vdev_split()
2058 zc->zc_iflags, &config))) { in zfs_ioc_vdev_split()
2063 if (zc->zc_nvlist_src_size != 0 && (error = in zfs_ioc_vdev_split()
2064 get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_vdev_split()
2065 zc->zc_iflags, &props))) { in zfs_ioc_vdev_split()
2071 error = spa_vdev_split_mirror(spa, zc->zc_string, config, props, exp); in zfs_ioc_vdev_split()
2082 zfs_ioc_vdev_setpath(zfs_cmd_t *zc) in zfs_ioc_vdev_setpath() argument
2085 const char *path = zc->zc_value; in zfs_ioc_vdev_setpath()
2086 uint64_t guid = zc->zc_guid; in zfs_ioc_vdev_setpath()
2089 error = spa_open(zc->zc_name, &spa, FTAG); in zfs_ioc_vdev_setpath()
2099 zfs_ioc_vdev_setfru(zfs_cmd_t *zc) in zfs_ioc_vdev_setfru() argument
2102 const char *fru = zc->zc_value; in zfs_ioc_vdev_setfru()
2103 uint64_t guid = zc->zc_guid; in zfs_ioc_vdev_setfru()
2106 error = spa_open(zc->zc_name, &spa, FTAG); in zfs_ioc_vdev_setfru()
2116 zfs_ioc_objset_stats_impl(zfs_cmd_t *zc, objset_t *os) in zfs_ioc_objset_stats_impl() argument
2121 dmu_objset_fast_stat(os, &zc->zc_objset_stats); in zfs_ioc_objset_stats_impl()
2123 if (!zc->zc_simple && zc->zc_nvlist_dst != 0 && in zfs_ioc_objset_stats_impl()
2133 if (!zc->zc_objset_stats.dds_inconsistent && in zfs_ioc_objset_stats_impl()
2143 error = put_nvlist(zc, nv); in zfs_ioc_objset_stats_impl()
2161 zfs_ioc_objset_stats(zfs_cmd_t *zc) in zfs_ioc_objset_stats() argument
2166 error = dmu_objset_hold(zc->zc_name, FTAG, &os); in zfs_ioc_objset_stats()
2168 error = zfs_ioc_objset_stats_impl(zc, os); in zfs_ioc_objset_stats()
2189 zfs_ioc_objset_recvd_props(zfs_cmd_t *zc) in zfs_ioc_objset_recvd_props() argument
2199 if (!dsl_prop_get_hasrecvd(zc->zc_name)) in zfs_ioc_objset_recvd_props()
2202 if (zc->zc_nvlist_dst != 0 && in zfs_ioc_objset_recvd_props()
2203 (error = dsl_prop_get_received(zc->zc_name, &nv)) == 0) { in zfs_ioc_objset_recvd_props()
2204 error = put_nvlist(zc, nv); in zfs_ioc_objset_recvd_props()
2237 zfs_ioc_objset_zplprops(zfs_cmd_t *zc) in zfs_ioc_objset_zplprops() argument
2243 if ((err = dmu_objset_hold(zc->zc_name, FTAG, &os))) in zfs_ioc_objset_zplprops()
2246 dmu_objset_fast_stat(os, &zc->zc_objset_stats); in zfs_ioc_objset_zplprops()
2253 if (zc->zc_nvlist_dst != 0 && in zfs_ioc_objset_zplprops()
2254 !zc->zc_objset_stats.dds_inconsistent && in zfs_ioc_objset_zplprops()
2275 err = put_nvlist(zc, nv); in zfs_ioc_objset_zplprops()
2298 zfs_ioc_dataset_list_next(zfs_cmd_t *zc) in zfs_ioc_dataset_list_next() argument
2303 size_t orig_len = strlen(zc->zc_name); in zfs_ioc_dataset_list_next()
2306 if ((error = dmu_objset_hold(zc->zc_name, FTAG, &os))) { in zfs_ioc_dataset_list_next()
2312 p = strrchr(zc->zc_name, '/'); in zfs_ioc_dataset_list_next()
2314 (void) strlcat(zc->zc_name, "/", sizeof (zc->zc_name)); in zfs_ioc_dataset_list_next()
2315 p = zc->zc_name + strlen(zc->zc_name); in zfs_ioc_dataset_list_next()
2319 sizeof (zc->zc_name) - (p - zc->zc_name), p, in zfs_ioc_dataset_list_next()
2320 NULL, &zc->zc_cookie); in zfs_ioc_dataset_list_next()
2323 } while (error == 0 && zfs_dataset_name_hidden(zc->zc_name)); in zfs_ioc_dataset_list_next()
2330 if (error == 0 && strchr(zc->zc_name, '$') == NULL) { in zfs_ioc_dataset_list_next()
2331 error = zfs_ioc_objset_stats(zc); /* fill in the stats */ in zfs_ioc_dataset_list_next()
2334 zc->zc_name[orig_len] = '\0'; in zfs_ioc_dataset_list_next()
2355 zfs_ioc_snapshot_list_next(zfs_cmd_t *zc) in zfs_ioc_snapshot_list_next() argument
2362 if (zc->zc_nvlist_src_size != 0) { in zfs_ioc_snapshot_list_next()
2364 error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_snapshot_list_next()
2365 zc->zc_iflags, &props); in zfs_ioc_snapshot_list_next()
2375 error = dmu_objset_hold(zc->zc_name, FTAG, &os); in zfs_ioc_snapshot_list_next()
2384 if (strlcat(zc->zc_name, "@", sizeof (zc->zc_name)) >= in zfs_ioc_snapshot_list_next()
2397 sizeof (zc->zc_name) - strlen(zc->zc_name), in zfs_ioc_snapshot_list_next()
2398 zc->zc_name + strlen(zc->zc_name), &zc->zc_obj, in zfs_ioc_snapshot_list_next()
2399 &zc->zc_cookie, NULL); in zfs_ioc_snapshot_list_next()
2407 error = dsl_dataset_hold_obj(dmu_objset_pool(os), zc->zc_obj, in zfs_ioc_snapshot_list_next()
2416 *(strchr(zc->zc_name, '@') + 1) = '\0'; in zfs_ioc_snapshot_list_next()
2421 if (zc->zc_simple) { in zfs_ioc_snapshot_list_next()
2422 dsl_dataset_fast_stat(ds, &zc->zc_objset_stats); in zfs_ioc_snapshot_list_next()
2431 if ((error = zfs_ioc_objset_stats_impl(zc, ossnap)) != 0) { in zfs_ioc_snapshot_list_next()
2442 *strchr(zc->zc_name, '@') = '\0'; in zfs_ioc_snapshot_list_next()
2611 zfs_cmd_t *zc; in zfs_prop_set_special() local
2613 zc = kmem_zalloc(sizeof (zfs_cmd_t), KM_SLEEP); in zfs_prop_set_special()
2614 (void) strlcpy(zc->zc_name, dsname, in zfs_prop_set_special()
2615 sizeof (zc->zc_name)); in zfs_prop_set_special()
2616 (void) zfs_ioc_userspace_upgrade(zc); in zfs_prop_set_special()
2617 (void) zfs_ioc_id_quota_upgrade(zc); in zfs_prop_set_special()
2618 kmem_free(zc, sizeof (zfs_cmd_t)); in zfs_prop_set_special()
2952 zfs_ioc_set_prop(zfs_cmd_t *zc) in zfs_ioc_set_prop() argument
2955 boolean_t received = zc->zc_cookie; in zfs_ioc_set_prop()
2961 if ((error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_set_prop()
2962 zc->zc_iflags, &nvl)) != 0) in zfs_ioc_set_prop()
2968 if (dsl_prop_get_received(zc->zc_name, &origprops) == 0) { in zfs_ioc_set_prop()
2969 (void) clear_received_props(zc->zc_name, in zfs_ioc_set_prop()
2974 error = dsl_prop_set_hasrecvd(zc->zc_name); in zfs_ioc_set_prop()
2979 error = zfs_set_prop_nvlist(zc->zc_name, source, nvl, errors); in zfs_ioc_set_prop()
2981 if (zc->zc_nvlist_dst != 0 && errors != NULL) { in zfs_ioc_set_prop()
2982 (void) put_nvlist(zc, errors); in zfs_ioc_set_prop()
2999 zfs_ioc_inherit_prop(zfs_cmd_t *zc) in zfs_ioc_inherit_prop() argument
3001 const char *propname = zc->zc_value; in zfs_ioc_inherit_prop()
3003 boolean_t received = zc->zc_cookie; in zfs_ioc_inherit_prop()
3057 err = zfs_prop_set_special(zc->zc_name, source, pair); in zfs_ioc_inherit_prop()
3059 err = dsl_prop_inherit(zc->zc_name, zc->zc_value, in zfs_ioc_inherit_prop()
3069 zfs_ioc_pool_set_props(zfs_cmd_t *zc) in zfs_ioc_pool_set_props() argument
3076 if ((error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_pool_set_props()
3077 zc->zc_iflags, &props))) in zfs_ioc_pool_set_props()
3089 if ((spa = spa_lookup(zc->zc_name)) != NULL) { in zfs_ioc_pool_set_props()
3100 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) { in zfs_ioc_pool_set_props()
3260 zfs_ioc_set_fsacl(zfs_cmd_t *zc) in zfs_ioc_set_fsacl() argument
3265 if ((error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_set_fsacl()
3266 zc->zc_iflags, &fsaclnv)) != 0) in zfs_ioc_set_fsacl()
3285 if (zc->zc_perm_action == B_FALSE) { in zfs_ioc_set_fsacl()
3286 error = dsl_deleg_can_allow(zc->zc_name, in zfs_ioc_set_fsacl()
3289 error = dsl_deleg_can_unallow(zc->zc_name, in zfs_ioc_set_fsacl()
3295 error = dsl_deleg_set(zc->zc_name, fsaclnv, zc->zc_perm_action); in zfs_ioc_set_fsacl()
3309 zfs_ioc_get_fsacl(zfs_cmd_t *zc) in zfs_ioc_get_fsacl() argument
3314 if ((error = dsl_deleg_get(zc->zc_name, &nvp)) == 0) { in zfs_ioc_get_fsacl()
3315 error = put_nvlist(zc, nvp); in zfs_ioc_get_fsacl()
4274 zfs_ioc_destroy(zfs_cmd_t *zc) in zfs_ioc_destroy() argument
4280 err = dmu_objset_hold(zc->zc_name, FTAG, &os); in zfs_ioc_destroy()
4287 zfs_unmount_snap(zc->zc_name); in zfs_ioc_destroy()
4289 if (strchr(zc->zc_name, '@')) { in zfs_ioc_destroy()
4290 err = dsl_destroy_snapshot(zc->zc_name, zc->zc_defer_destroy); in zfs_ioc_destroy()
4292 err = dsl_destroy_head(zc->zc_name); in zfs_ioc_destroy()
4305 zc->zc_name, recv_clone_name) >= in zfs_ioc_destroy()
4317 err = dsl_destroy_head(zc->zc_name); in zfs_ioc_destroy()
4772 zfs_ioc_rename(zfs_cmd_t *zc) in zfs_ioc_rename() argument
4776 boolean_t recursive = zc->zc_cookie & 1; in zfs_ioc_rename()
4777 boolean_t nounmount = !!(zc->zc_cookie & 2); in zfs_ioc_rename()
4782 zc->zc_name[sizeof (zc->zc_name) - 1] = '\0'; in zfs_ioc_rename()
4783 zc->zc_value[sizeof (zc->zc_value) - 1] = '\0'; in zfs_ioc_rename()
4784 if (dataset_namecheck(zc->zc_name, NULL, NULL) != 0 || in zfs_ioc_rename()
4785 dataset_namecheck(zc->zc_value, NULL, NULL) != 0 || in zfs_ioc_rename()
4786 strchr(zc->zc_name, '%') || strchr(zc->zc_value, '%')) in zfs_ioc_rename()
4789 err = dmu_objset_hold(zc->zc_name, FTAG, &os); in zfs_ioc_rename()
4795 at = strchr(zc->zc_name, '@'); in zfs_ioc_rename()
4800 if (strncmp(zc->zc_name, zc->zc_value, at - zc->zc_name + 1)) in zfs_ioc_rename()
4804 error = dmu_objset_find(zc->zc_name, in zfs_ioc_rename()
4812 error = dsl_dataset_rename_snapshot(zc->zc_name, in zfs_ioc_rename()
4813 at + 1, strchr(zc->zc_value, '@') + 1, recursive); in zfs_ioc_rename()
4818 return (dsl_dir_rename(zc->zc_name, zc->zc_value)); in zfs_ioc_rename()
5082 zfs_cmd_t *zc; in zfs_check_clearable() local
5092 zc = kmem_alloc(sizeof (zfs_cmd_t), KM_SLEEP); in zfs_check_clearable()
5093 (void) strlcpy(zc->zc_name, dataset, sizeof (zc->zc_name)); in zfs_check_clearable()
5098 (void) strlcpy(zc->zc_value, nvpair_name(pair), in zfs_check_clearable()
5099 sizeof (zc->zc_value)); in zfs_check_clearable()
5101 (err = zfs_secpolicy_inherit_prop(zc, NULL, CRED())) != 0) { in zfs_check_clearable()
5104 zc->zc_value, err) == 0); in zfs_check_clearable()
5108 kmem_free(zc, sizeof (zfs_cmd_t)); in zfs_check_clearable()
5613 zfs_ioc_recv(zfs_cmd_t *zc) in zfs_ioc_recv() argument
5624 if (dataset_namecheck(zc->zc_value, NULL, NULL) != 0 || in zfs_ioc_recv()
5625 strchr(zc->zc_value, '@') == NULL || in zfs_ioc_recv()
5626 strchr(zc->zc_value, '%') != NULL) { in zfs_ioc_recv()
5630 (void) strlcpy(tofs, zc->zc_value, sizeof (tofs)); in zfs_ioc_recv()
5634 if (zc->zc_nvlist_src != 0 && in zfs_ioc_recv()
5635 (error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfs_ioc_recv()
5636 zc->zc_iflags, &recvdprops)) != 0) { in zfs_ioc_recv()
5640 if (zc->zc_nvlist_conf != 0 && in zfs_ioc_recv()
5641 (error = get_nvlist(zc->zc_nvlist_conf, zc->zc_nvlist_conf_size, in zfs_ioc_recv()
5642 zc->zc_iflags, &localprops)) != 0) { in zfs_ioc_recv()
5646 if (zc->zc_string[0]) in zfs_ioc_recv()
5647 origin = zc->zc_string; in zfs_ioc_recv()
5651 begin_record.drr_u.drr_begin = zc->zc_begin_record; in zfs_ioc_recv()
5654 NULL, zc->zc_guid, B_FALSE, B_FALSE, zc->zc_cookie, &begin_record, in zfs_ioc_recv()
5655 &zc->zc_cookie, &zc->zc_obj, &errors); in zfs_ioc_recv()
5661 if (zc->zc_nvlist_dst_size != 0 && errors != NULL && in zfs_ioc_recv()
5662 (nvlist_smush(errors, zc->zc_nvlist_dst_size) != 0 || in zfs_ioc_recv()
5663 put_nvlist(zc, errors) != 0)) { in zfs_ioc_recv()
5899 zfs_ioc_send(zfs_cmd_t *zc) in zfs_ioc_send() argument
5903 boolean_t estimate = (zc->zc_guid != 0); in zfs_ioc_send()
5904 boolean_t embedok = (zc->zc_flags & 0x1); in zfs_ioc_send()
5905 boolean_t large_block_ok = (zc->zc_flags & 0x2); in zfs_ioc_send()
5906 boolean_t compressok = (zc->zc_flags & 0x4); in zfs_ioc_send()
5907 boolean_t rawok = (zc->zc_flags & 0x8); in zfs_ioc_send()
5908 boolean_t savedok = (zc->zc_flags & 0x10); in zfs_ioc_send()
5910 if (zc->zc_obj != 0) { in zfs_ioc_send()
5914 error = dsl_pool_hold(zc->zc_name, FTAG, &dp); in zfs_ioc_send()
5918 error = dsl_dataset_hold_obj(dp, zc->zc_sendobj, FTAG, &tosnap); in zfs_ioc_send()
5925 zc->zc_fromobj = in zfs_ioc_send()
5936 error = dsl_pool_hold(zc->zc_name, FTAG, &dp); in zfs_ioc_send()
5940 error = dsl_dataset_hold_obj(dp, zc->zc_sendobj, in zfs_ioc_send()
5947 if (zc->zc_fromobj != 0) { in zfs_ioc_send()
5948 error = dsl_dataset_hold_obj(dp, zc->zc_fromobj, in zfs_ioc_send()
5958 compressok || rawok, savedok, &zc->zc_objset_type); in zfs_ioc_send()
5967 error = dump_bytes_init(&dba, zc->zc_cookie, &out); in zfs_ioc_send()
5972 error = dmu_send_obj(zc->zc_name, zc->zc_sendobj, in zfs_ioc_send()
5973 zc->zc_fromobj, embedok, large_block_ok, compressok, in zfs_ioc_send()
5974 rawok, savedok, zc->zc_cookie, &off, &out); in zfs_ioc_send()
5991 zfs_ioc_send_progress(zfs_cmd_t *zc) in zfs_ioc_send_progress() argument
5998 error = dsl_pool_hold(zc->zc_name, FTAG, &dp); in zfs_ioc_send_progress()
6002 error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &ds); in zfs_ioc_send_progress()
6019 if (dsp->dss_outfd == zc->zc_cookie && in zfs_ioc_send_progress()
6025 zc->zc_cookie = atomic_cas_64((volatile uint64_t *)dsp->dss_off, in zfs_ioc_send_progress()
6028 zc->zc_objset_type = atomic_cas_64(&dsp->dss_blocks, 0, 0); in zfs_ioc_send_progress()
6040 zfs_ioc_inject_fault(zfs_cmd_t *zc) in zfs_ioc_inject_fault() argument
6044 error = zio_inject_fault(zc->zc_name, (int)zc->zc_guid, &id, in zfs_ioc_inject_fault()
6045 &zc->zc_inject_record); in zfs_ioc_inject_fault()
6048 zc->zc_guid = (uint64_t)id; in zfs_ioc_inject_fault()
6054 zfs_ioc_clear_fault(zfs_cmd_t *zc) in zfs_ioc_clear_fault() argument
6056 return (zio_clear_fault((int)zc->zc_guid)); in zfs_ioc_clear_fault()
6060 zfs_ioc_inject_list_next(zfs_cmd_t *zc) in zfs_ioc_inject_list_next() argument
6062 int id = (int)zc->zc_guid; in zfs_ioc_inject_list_next()
6065 error = zio_inject_list_next(&id, zc->zc_name, sizeof (zc->zc_name), in zfs_ioc_inject_list_next()
6066 &zc->zc_inject_record); in zfs_ioc_inject_list_next()
6068 zc->zc_guid = id; in zfs_ioc_inject_list_next()
6074 zfs_ioc_error_log(zfs_cmd_t *zc) in zfs_ioc_error_log() argument
6079 if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) in zfs_ioc_error_log()
6082 error = spa_get_errlog(spa, (void *)(uintptr_t)zc->zc_nvlist_dst, in zfs_ioc_error_log()
6083 &zc->zc_nvlist_dst_size); in zfs_ioc_error_log()
6091 zfs_ioc_clear(zfs_cmd_t *zc) in zfs_ioc_clear() argument
6101 spa = spa_lookup(zc->zc_name); in zfs_ioc_clear()
6113 if (zc->zc_cookie & ZPOOL_NO_REWIND) { in zfs_ioc_clear()
6114 error = spa_open(zc->zc_name, &spa, FTAG); in zfs_ioc_clear()
6119 if (zc->zc_nvlist_src == 0) in zfs_ioc_clear()
6122 if ((error = get_nvlist(zc->zc_nvlist_src, in zfs_ioc_clear()
6123 zc->zc_nvlist_src_size, zc->zc_iflags, &policy)) == 0) { in zfs_ioc_clear()
6124 error = spa_open_rewind(zc->zc_name, &spa, FTAG, in zfs_ioc_clear()
6129 if ((err = put_nvlist(zc, config)) != 0) in zfs_ioc_clear()
6152 if (zc->zc_guid == 0) { in zfs_ioc_clear()
6155 vd = spa_lookup_by_guid(spa, zc->zc_guid, B_TRUE); in zfs_ioc_clear()
6240 zfs_ioc_promote(zfs_cmd_t *zc) in zfs_ioc_promote() argument
6248 zc->zc_name[sizeof (zc->zc_name) - 1] = '\0'; in zfs_ioc_promote()
6249 if (dataset_namecheck(zc->zc_name, NULL, NULL) != 0 || in zfs_ioc_promote()
6250 strchr(zc->zc_name, '%')) in zfs_ioc_promote()
6253 error = dsl_pool_hold(zc->zc_name, FTAG, &dp); in zfs_ioc_promote()
6257 error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &ds); in zfs_ioc_promote()
6291 return (dsl_dataset_promote(zc->zc_name, zc->zc_string)); in zfs_ioc_promote()
6307 zfs_ioc_userspace_one(zfs_cmd_t *zc) in zfs_ioc_userspace_one() argument
6312 if (zc->zc_objset_type >= ZFS_NUM_USERQUOTA_PROPS) in zfs_ioc_userspace_one()
6315 error = zfsvfs_hold(zc->zc_name, FTAG, &zfsvfs, B_FALSE); in zfs_ioc_userspace_one()
6320 zc->zc_objset_type, zc->zc_value, zc->zc_guid, &zc->zc_cookie); in zfs_ioc_userspace_one()
6338 zfs_ioc_userspace_many(zfs_cmd_t *zc) in zfs_ioc_userspace_many() argument
6341 int bufsize = zc->zc_nvlist_dst_size; in zfs_ioc_userspace_many()
6346 int error = zfsvfs_hold(zc->zc_name, FTAG, &zfsvfs, B_FALSE); in zfs_ioc_userspace_many()
6352 error = zfs_userspace_many(zfsvfs, zc->zc_objset_type, &zc->zc_cookie, in zfs_ioc_userspace_many()
6353 buf, &zc->zc_nvlist_dst_size, &zc->zc_guid); in zfs_ioc_userspace_many()
6357 (void *)(uintptr_t)zc->zc_nvlist_dst, in zfs_ioc_userspace_many()
6358 zc->zc_nvlist_dst_size); in zfs_ioc_userspace_many()
6374 zfs_ioc_userspace_upgrade(zfs_cmd_t *zc) in zfs_ioc_userspace_upgrade() argument
6379 if (getzfsvfs(zc->zc_name, &zfsvfs) == 0) { in zfs_ioc_userspace_upgrade()
6421 error = dmu_objset_hold_flags(zc->zc_name, B_TRUE, FTAG, &os); in zfs_ioc_userspace_upgrade()
6455 zfs_ioc_id_quota_upgrade(zfs_cmd_t *zc) in zfs_ioc_id_quota_upgrade() argument
6460 error = dmu_objset_hold_flags(zc->zc_name, B_TRUE, FTAG, &os); in zfs_ioc_id_quota_upgrade()
6491 zfs_ioc_share(zfs_cmd_t *zc) in zfs_ioc_share() argument
6505 zfs_ioc_next_obj(zfs_cmd_t *zc) in zfs_ioc_next_obj() argument
6510 error = dmu_objset_hold(zc->zc_name, FTAG, &os); in zfs_ioc_next_obj()
6514 error = dmu_object_next(os, &zc->zc_obj, B_FALSE, 0); in zfs_ioc_next_obj()
6530 zfs_ioc_tmp_snapshot(zfs_cmd_t *zc) in zfs_ioc_tmp_snapshot() argument
6536 zfs_file_t *fp = zfs_onexit_fd_hold(zc->zc_cleanup_fd, &minor); in zfs_ioc_tmp_snapshot()
6540 snap_name = kmem_asprintf("%s-%016llx", zc->zc_value, in zfs_ioc_tmp_snapshot()
6542 hold_name = kmem_asprintf("%%%s", zc->zc_value); in zfs_ioc_tmp_snapshot()
6544 int error = dsl_dataset_snapshot_tmp(zc->zc_name, snap_name, minor, in zfs_ioc_tmp_snapshot()
6547 (void) strlcpy(zc->zc_value, snap_name, in zfs_ioc_tmp_snapshot()
6548 sizeof (zc->zc_value)); in zfs_ioc_tmp_snapshot()
6565 zfs_ioc_diff(zfs_cmd_t *zc) in zfs_ioc_diff() argument
6571 if ((fp = zfs_file_get(zc->zc_cookie)) == NULL) in zfs_ioc_diff()
6575 error = dmu_diff(zc->zc_name, zc->zc_value, fp, &off); in zfs_ioc_diff()
6583 zfs_ioc_smb_acl(zfs_cmd_t *zc) in zfs_ioc_smb_acl() argument
6695 zfs_ioc_events_next(zfs_cmd_t *zc) in zfs_ioc_events_next() argument
6703 zfs_file_t *fp = zfs_zevent_fd_hold(zc->zc_cleanup_fd, &minor, &ze); in zfs_ioc_events_next()
6709 &zc->zc_nvlist_dst_size, &dropped); in zfs_ioc_events_next()
6711 zc->zc_cookie = dropped; in zfs_ioc_events_next()
6712 error = put_nvlist(zc, event); in zfs_ioc_events_next()
6716 if (zc->zc_guid & ZEVENT_NONBLOCK) in zfs_ioc_events_next()
6737 zfs_ioc_events_clear(zfs_cmd_t *zc) in zfs_ioc_events_clear() argument
6742 zc->zc_cookie = count; in zfs_ioc_events_clear()
6753 zfs_ioc_events_seek(zfs_cmd_t *zc) in zfs_ioc_events_seek() argument
6759 zfs_file_t *fp = zfs_zevent_fd_hold(zc->zc_cleanup_fd, &minor, &ze); in zfs_ioc_events_seek()
6763 error = zfs_zevent_seek(ze, zc->zc_guid); in zfs_ioc_events_seek()
6780 zfs_ioc_space_written(zfs_cmd_t *zc) in zfs_ioc_space_written() argument
6786 error = dsl_pool_hold(zc->zc_name, FTAG, &dp); in zfs_ioc_space_written()
6789 error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &new); in zfs_ioc_space_written()
6794 if (strchr(zc->zc_value, '#') != NULL) { in zfs_ioc_space_written()
6796 error = dsl_bookmark_lookup(dp, zc->zc_value, in zfs_ioc_space_written()
6800 &zc->zc_cookie, in zfs_ioc_space_written()
6801 &zc->zc_objset_type, &zc->zc_perm_action); in zfs_ioc_space_written()
6805 error = dsl_dataset_hold(dp, zc->zc_value, FTAG, &old); in zfs_ioc_space_written()
6809 &zc->zc_cookie, in zfs_ioc_space_written()
6810 &zc->zc_objset_type, &zc->zc_perm_action); in zfs_ioc_space_written()
8011 zfsdev_ioctl_common(uint_t vecnum, zfs_cmd_t *zc, int flag) in zfsdev_ioctl_common() argument
8036 zc->zc_iflags = flag & FKIOCTL; in zfsdev_ioctl_common()
8038 if (zc->zc_nvlist_src_size > max_nvlist_src_size) { in zfsdev_ioctl_common()
8054 } else if (zc->zc_nvlist_src_size != 0) { in zfsdev_ioctl_common()
8055 error = get_nvlist(zc->zc_nvlist_src, zc->zc_nvlist_src_size, in zfsdev_ioctl_common()
8056 zc->zc_iflags, &innvl); in zfsdev_ioctl_common()
8065 zc->zc_name[sizeof (zc->zc_name) - 1] = '\0'; in zfsdev_ioctl_common()
8068 if (pool_namecheck(zc->zc_name, NULL, NULL) != 0) in zfsdev_ioctl_common()
8071 error = pool_status_check(zc->zc_name, in zfsdev_ioctl_common()
8076 if (dataset_namecheck(zc->zc_name, NULL, NULL) != 0) in zfsdev_ioctl_common()
8079 error = pool_status_check(zc->zc_name, in zfsdev_ioctl_common()
8084 if (entity_namecheck(zc->zc_name, NULL, NULL) != 0) { in zfsdev_ioctl_common()
8087 error = pool_status_check(zc->zc_name, in zfsdev_ioctl_common()
8111 error = vec->zvec_secpolicy(zc, innvl, CRED()); in zfsdev_ioctl_common()
8123 saved_poolname_len = strlen(zc->zc_name) + 1; in zfsdev_ioctl_common()
8126 strlcpy(saved_poolname, zc->zc_name, saved_poolname_len); in zfsdev_ioctl_common()
8153 error = vec->zvec_func(zc->zc_name, innvl, outnvl); in zfsdev_ioctl_common()
8164 spa_open(zc->zc_name, &spa, FTAG) == 0) { in zfsdev_ioctl_common()
8186 if (!nvlist_empty(outnvl) || zc->zc_nvlist_dst_size != 0) { in zfsdev_ioctl_common()
8190 zc->zc_nvlist_dst_size); in zfsdev_ioctl_common()
8193 puterror = put_nvlist(zc, outnvl); in zfsdev_ioctl_common()
8202 error = vec->zvec_legacy_func(zc); in zfsdev_ioctl_common()