Print this page
6659 nvlist_free(NULL) is a no-op


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