1993 break;
1994
1995 case ZFS_PROP_VERSION:
1996 case ZFS_PROP_NORMALIZE:
1997 case ZFS_PROP_UTF8ONLY:
1998 case ZFS_PROP_CASE:
1999 if (!zfs_prop_valid_for_type(prop, zhp->zfs_head_type) ||
2000 zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0) != 0)
2001 return (-1);
2002 (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name));
2003 if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_OBJSET_ZPLPROPS, &zc)) {
2004 zcmd_free_nvlists(&zc);
2005 return (-1);
2006 }
2007 if (zcmd_read_dst_nvlist(zhp->zfs_hdl, &zc, &zplprops) != 0 ||
2008 nvlist_lookup_uint64(zplprops, zfs_prop_to_name(prop),
2009 val) != 0) {
2010 zcmd_free_nvlists(&zc);
2011 return (-1);
2012 }
2013 if (zplprops)
2014 nvlist_free(zplprops);
2015 zcmd_free_nvlists(&zc);
2016 break;
2017
2018 case ZFS_PROP_INCONSISTENT:
2019 *val = zhp->zfs_dmustats.dds_inconsistent;
2020 break;
2021
2022 default:
2023 switch (zfs_prop_get_type(prop)) {
2024 case PROP_TYPE_NUMBER:
2025 case PROP_TYPE_INDEX:
2026 *val = getprop_uint64(zhp, prop, source);
2027 /*
2028 * If we tried to use a default value for a
2029 * readonly property, it means that it was not
2030 * present.
2031 */
2032 if (zfs_prop_readonly(prop) &&
2033 *source != NULL && (*source)[0] == '\0') {
4225 resource1) != 0) {
4226 (void) no_memory(hdl);
4227 return (-1);
4228 }
4229 if (nvlist_add_string(nvlist, ZFS_SMB_ACL_TARGET,
4230 resource2) != 0) {
4231 (void) no_memory(hdl);
4232 return (-1);
4233 }
4234 if (zcmd_write_src_nvlist(hdl, &zc, nvlist) != 0) {
4235 nvlist_free(nvlist);
4236 return (-1);
4237 }
4238 break;
4239 case ZFS_SMB_ACL_PURGE:
4240 break;
4241 default:
4242 return (-1);
4243 }
4244 error = ioctl(hdl->libzfs_fd, ZFS_IOC_SMB_ACL, &zc);
4245 if (nvlist)
4246 nvlist_free(nvlist);
4247 return (error);
4248 }
4249
4250 int
4251 zfs_smb_acl_add(libzfs_handle_t *hdl, char *dataset,
4252 char *path, char *resource)
4253 {
4254 return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_ADD,
4255 resource, NULL));
4256 }
4257
4258 int
4259 zfs_smb_acl_remove(libzfs_handle_t *hdl, char *dataset,
4260 char *path, char *resource)
4261 {
4262 return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_REMOVE,
4263 resource, NULL));
4264 }
4265
|
1993 break;
1994
1995 case ZFS_PROP_VERSION:
1996 case ZFS_PROP_NORMALIZE:
1997 case ZFS_PROP_UTF8ONLY:
1998 case ZFS_PROP_CASE:
1999 if (!zfs_prop_valid_for_type(prop, zhp->zfs_head_type) ||
2000 zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0) != 0)
2001 return (-1);
2002 (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name));
2003 if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_OBJSET_ZPLPROPS, &zc)) {
2004 zcmd_free_nvlists(&zc);
2005 return (-1);
2006 }
2007 if (zcmd_read_dst_nvlist(zhp->zfs_hdl, &zc, &zplprops) != 0 ||
2008 nvlist_lookup_uint64(zplprops, zfs_prop_to_name(prop),
2009 val) != 0) {
2010 zcmd_free_nvlists(&zc);
2011 return (-1);
2012 }
2013 nvlist_free(zplprops);
2014 zcmd_free_nvlists(&zc);
2015 break;
2016
2017 case ZFS_PROP_INCONSISTENT:
2018 *val = zhp->zfs_dmustats.dds_inconsistent;
2019 break;
2020
2021 default:
2022 switch (zfs_prop_get_type(prop)) {
2023 case PROP_TYPE_NUMBER:
2024 case PROP_TYPE_INDEX:
2025 *val = getprop_uint64(zhp, prop, source);
2026 /*
2027 * If we tried to use a default value for a
2028 * readonly property, it means that it was not
2029 * present.
2030 */
2031 if (zfs_prop_readonly(prop) &&
2032 *source != NULL && (*source)[0] == '\0') {
4224 resource1) != 0) {
4225 (void) no_memory(hdl);
4226 return (-1);
4227 }
4228 if (nvlist_add_string(nvlist, ZFS_SMB_ACL_TARGET,
4229 resource2) != 0) {
4230 (void) no_memory(hdl);
4231 return (-1);
4232 }
4233 if (zcmd_write_src_nvlist(hdl, &zc, nvlist) != 0) {
4234 nvlist_free(nvlist);
4235 return (-1);
4236 }
4237 break;
4238 case ZFS_SMB_ACL_PURGE:
4239 break;
4240 default:
4241 return (-1);
4242 }
4243 error = ioctl(hdl->libzfs_fd, ZFS_IOC_SMB_ACL, &zc);
4244 nvlist_free(nvlist);
4245 return (error);
4246 }
4247
4248 int
4249 zfs_smb_acl_add(libzfs_handle_t *hdl, char *dataset,
4250 char *path, char *resource)
4251 {
4252 return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_ADD,
4253 resource, NULL));
4254 }
4255
4256 int
4257 zfs_smb_acl_remove(libzfs_handle_t *hdl, char *dataset,
4258 char *path, char *resource)
4259 {
4260 return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_REMOVE,
4261 resource, NULL));
4262 }
4263
|