5043 vsec.vsa_mask = VSA_ACE;
5044 vsec.vsa_aclentp = &full_access;
5045 vsec.vsa_aclentsz = sizeof (full_access);
5046 vsec.vsa_aclcnt = 1;
5047
5048 error = VOP_CREATE(ZTOV(sharedir), zc->zc_string,
5049 &vattr, EXCL, 0, &resourcevp, kcred, 0, NULL, &vsec);
5050 if (resourcevp)
5051 VN_RELE(resourcevp);
5052 break;
5053
5054 case ZFS_SMB_ACL_REMOVE:
5055 error = VOP_REMOVE(ZTOV(sharedir), zc->zc_string, kcred,
5056 NULL, 0);
5057 break;
5058
5059 case ZFS_SMB_ACL_RENAME:
5060 if ((error = get_nvlist(zc->zc_nvlist_src,
5061 zc->zc_nvlist_src_size, zc->zc_iflags, &nvlist)) != 0) {
5062 VN_RELE(vp);
5063 ZFS_EXIT(zfsvfs);
5064 return (error);
5065 }
5066 if (nvlist_lookup_string(nvlist, ZFS_SMB_ACL_SRC, &src) ||
5067 nvlist_lookup_string(nvlist, ZFS_SMB_ACL_TARGET,
5068 &target)) {
5069 VN_RELE(vp);
5070 VN_RELE(ZTOV(sharedir));
5071 ZFS_EXIT(zfsvfs);
5072 nvlist_free(nvlist);
5073 return (error);
5074 }
5075 error = VOP_RENAME(ZTOV(sharedir), src, ZTOV(sharedir), target,
5076 kcred, NULL, 0);
5077 nvlist_free(nvlist);
5078 break;
5079
5080 case ZFS_SMB_ACL_PURGE:
5081 error = zfs_smb_acl_purge(sharedir);
5082 break;
|
5043 vsec.vsa_mask = VSA_ACE;
5044 vsec.vsa_aclentp = &full_access;
5045 vsec.vsa_aclentsz = sizeof (full_access);
5046 vsec.vsa_aclcnt = 1;
5047
5048 error = VOP_CREATE(ZTOV(sharedir), zc->zc_string,
5049 &vattr, EXCL, 0, &resourcevp, kcred, 0, NULL, &vsec);
5050 if (resourcevp)
5051 VN_RELE(resourcevp);
5052 break;
5053
5054 case ZFS_SMB_ACL_REMOVE:
5055 error = VOP_REMOVE(ZTOV(sharedir), zc->zc_string, kcred,
5056 NULL, 0);
5057 break;
5058
5059 case ZFS_SMB_ACL_RENAME:
5060 if ((error = get_nvlist(zc->zc_nvlist_src,
5061 zc->zc_nvlist_src_size, zc->zc_iflags, &nvlist)) != 0) {
5062 VN_RELE(vp);
5063 VN_RELE(ZTOV(sharedir));
5064 ZFS_EXIT(zfsvfs);
5065 return (error);
5066 }
5067 if (nvlist_lookup_string(nvlist, ZFS_SMB_ACL_SRC, &src) ||
5068 nvlist_lookup_string(nvlist, ZFS_SMB_ACL_TARGET,
5069 &target)) {
5070 VN_RELE(vp);
5071 VN_RELE(ZTOV(sharedir));
5072 ZFS_EXIT(zfsvfs);
5073 nvlist_free(nvlist);
5074 return (error);
5075 }
5076 error = VOP_RENAME(ZTOV(sharedir), src, ZTOV(sharedir), target,
5077 kcred, NULL, 0);
5078 nvlist_free(nvlist);
5079 break;
5080
5081 case ZFS_SMB_ACL_PURGE:
5082 error = zfs_smb_acl_purge(sharedir);
5083 break;
|