Print this page
6096 ZFS_SMB_ACL_RENAME needs to cleanup better
Reviewed by: Matthew Ahrens <mahrens@delphix.com>


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;