]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Linux does not HAVE_SMB_SHARE
authorMatthew Ahrens <mahrens@delphix.com>
Wed, 17 Oct 2018 17:31:38 +0000 (10:31 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 17 Oct 2018 17:31:38 +0000 (10:31 -0700)
Since Linux does not have an in-kernel SMB server, we don't need the
code to manage it.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
Closes #8032

include/sys/zfs_znode.h
module/zfs/zfs_ioctl.c
module/zfs/zfs_znode.c

index 5fa0986eacc3ca7ca841c7e6ef3cd2b778afbb6f..2dfcf453a53174bb5c1b1c7fca8a18a4aa0d7106 100644 (file)
@@ -389,7 +389,6 @@ extern void zfs_log_acl(zilog_t *zilog, dmu_tx_t *tx, znode_t *zp,
     vsecattr_t *vsecp, zfs_fuid_info_t *fuidp);
 extern void zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx);
 extern void zfs_upgrade(zfsvfs_t *zfsvfs, dmu_tx_t *tx);
-extern int zfs_create_share_dir(zfsvfs_t *zfsvfs, dmu_tx_t *tx);
 
 #if defined(HAVE_UIO_RW)
 extern caddr_t zfs_map_page(page_t *, enum seg_rw);
index f8fd85880b41a0b75d3ad595d4c7c195eac3b358..e19ed34df037759d290d09747a3f2f00c2efc089 100644 (file)
@@ -774,65 +774,16 @@ zfs_secpolicy_send_new(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
            ZFS_DELEG_PERM_SEND, cr));
 }
 
-#ifdef HAVE_SMB_SHARE
-/* ARGSUSED */
-static int
-zfs_secpolicy_deleg_share(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
-{
-       vnode_t *vp;
-       int error;
-
-       if ((error = lookupname(zc->zc_value, UIO_SYSSPACE,
-           NO_FOLLOW, NULL, &vp)) != 0)
-               return (error);
-
-       /* Now make sure mntpnt and dataset are ZFS */
-
-       if (vp->v_vfsp->vfs_fstype != zfsfstype ||
-           (strcmp((char *)refstr_value(vp->v_vfsp->vfs_resource),
-           zc->zc_name) != 0)) {
-               VN_RELE(vp);
-               return (SET_ERROR(EPERM));
-       }
-
-       VN_RELE(vp);
-       return (dsl_deleg_access(zc->zc_name,
-           ZFS_DELEG_PERM_SHARE, cr));
-}
-#endif /* HAVE_SMB_SHARE */
-
 int
 zfs_secpolicy_share(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
 {
-#ifdef HAVE_SMB_SHARE
-       if (!INGLOBALZONE(curproc))
-               return (SET_ERROR(EPERM));
-
-       if (secpolicy_nfs(cr) == 0) {
-               return (0);
-       } else {
-               return (zfs_secpolicy_deleg_share(zc, innvl, cr));
-       }
-#else
        return (SET_ERROR(ENOTSUP));
-#endif /* HAVE_SMB_SHARE */
 }
 
 int
 zfs_secpolicy_smb_acl(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
 {
-#ifdef HAVE_SMB_SHARE
-       if (!INGLOBALZONE(curproc))
-               return (SET_ERROR(EPERM));
-
-       if (secpolicy_smb(cr) == 0) {
-               return (0);
-       } else {
-               return (zfs_secpolicy_deleg_share(zc, innvl, cr));
-       }
-#else
        return (SET_ERROR(ENOTSUP));
-#endif /* HAVE_SMB_SHARE */
 }
 
 static int
@@ -5615,159 +5566,10 @@ zfs_ioc_diff(zfs_cmd_t *zc)
        return (error);
 }
 
-/*
- * Remove all ACL files in shares dir
- */
-#ifdef HAVE_SMB_SHARE
-static int
-zfs_smb_acl_purge(znode_t *dzp)
-{
-       zap_cursor_t    zc;
-       zap_attribute_t zap;
-       zfsvfs_t *zfsvfs = ZTOZSB(dzp);
-       int error;
-
-       for (zap_cursor_init(&zc, zfsvfs->z_os, dzp->z_id);
-           (error = zap_cursor_retrieve(&zc, &zap)) == 0;
-           zap_cursor_advance(&zc)) {
-               if ((error = VOP_REMOVE(ZTOV(dzp), zap.za_name, kcred,
-                   NULL, 0)) != 0)
-                       break;
-       }
-       zap_cursor_fini(&zc);
-       return (error);
-}
-#endif /* HAVE_SMB_SHARE */
-
 static int
 zfs_ioc_smb_acl(zfs_cmd_t *zc)
 {
-#ifdef HAVE_SMB_SHARE
-       vnode_t *vp;
-       znode_t *dzp;
-       vnode_t *resourcevp = NULL;
-       znode_t *sharedir;
-       zfsvfs_t *zfsvfs;
-       nvlist_t *nvlist;
-       char *src, *target;
-       vattr_t vattr;
-       vsecattr_t vsec;
-       int error = 0;
-
-       if ((error = lookupname(zc->zc_value, UIO_SYSSPACE,
-           NO_FOLLOW, NULL, &vp)) != 0)
-               return (error);
-
-       /* Now make sure mntpnt and dataset are ZFS */
-
-       if (vp->v_vfsp->vfs_fstype != zfsfstype ||
-           (strcmp((char *)refstr_value(vp->v_vfsp->vfs_resource),
-           zc->zc_name) != 0)) {
-               VN_RELE(vp);
-               return (SET_ERROR(EINVAL));
-       }
-
-       dzp = VTOZ(vp);
-       zfsvfs = ZTOZSB(dzp);
-       ZFS_ENTER(zfsvfs);
-
-       /*
-        * Create share dir if its missing.
-        */
-       mutex_enter(&zfsvfs->z_lock);
-       if (zfsvfs->z_shares_dir == 0) {
-               dmu_tx_t *tx;
-
-               tx = dmu_tx_create(zfsvfs->z_os);
-               dmu_tx_hold_zap(tx, MASTER_NODE_OBJ, TRUE,
-                   ZFS_SHARES_DIR);
-               dmu_tx_hold_zap(tx, DMU_NEW_OBJECT, FALSE, NULL);
-               error = dmu_tx_assign(tx, TXG_WAIT);
-               if (error != 0) {
-                       dmu_tx_abort(tx);
-               } else {
-                       error = zfs_create_share_dir(zfsvfs, tx);
-                       dmu_tx_commit(tx);
-               }
-               if (error != 0) {
-                       mutex_exit(&zfsvfs->z_lock);
-                       VN_RELE(vp);
-                       ZFS_EXIT(zfsvfs);
-                       return (error);
-               }
-       }
-       mutex_exit(&zfsvfs->z_lock);
-
-       ASSERT(zfsvfs->z_shares_dir);
-       if ((error = zfs_zget(zfsvfs, zfsvfs->z_shares_dir, &sharedir)) != 0) {
-               VN_RELE(vp);
-               ZFS_EXIT(zfsvfs);
-               return (error);
-       }
-
-       switch (zc->zc_cookie) {
-       case ZFS_SMB_ACL_ADD:
-               vattr.va_mask = AT_MODE|AT_UID|AT_GID|AT_TYPE;
-               vattr.va_mode = S_IFREG|0777;
-               vattr.va_uid = 0;
-               vattr.va_gid = 0;
-
-               vsec.vsa_mask = VSA_ACE;
-               vsec.vsa_aclentp = &full_access;
-               vsec.vsa_aclentsz = sizeof (full_access);
-               vsec.vsa_aclcnt = 1;
-
-               error = VOP_CREATE(ZTOV(sharedir), zc->zc_string,
-                   &vattr, EXCL, 0, &resourcevp, kcred, 0, NULL, &vsec);
-               if (resourcevp)
-                       VN_RELE(resourcevp);
-               break;
-
-       case ZFS_SMB_ACL_REMOVE:
-               error = VOP_REMOVE(ZTOV(sharedir), zc->zc_string, kcred,
-                   NULL, 0);
-               break;
-
-       case ZFS_SMB_ACL_RENAME:
-               if ((error = get_nvlist(zc->zc_nvlist_src,
-                   zc->zc_nvlist_src_size, zc->zc_iflags, &nvlist)) != 0) {
-                       VN_RELE(vp);
-                       VN_RELE(ZTOV(sharedir));
-                       ZFS_EXIT(zfsvfs);
-                       return (error);
-               }
-               if (nvlist_lookup_string(nvlist, ZFS_SMB_ACL_SRC, &src) ||
-                   nvlist_lookup_string(nvlist, ZFS_SMB_ACL_TARGET,
-                   &target)) {
-                       VN_RELE(vp);
-                       VN_RELE(ZTOV(sharedir));
-                       ZFS_EXIT(zfsvfs);
-                       nvlist_free(nvlist);
-                       return (error);
-               }
-               error = VOP_RENAME(ZTOV(sharedir), src, ZTOV(sharedir), target,
-                   kcred, NULL, 0);
-               nvlist_free(nvlist);
-               break;
-
-       case ZFS_SMB_ACL_PURGE:
-               error = zfs_smb_acl_purge(sharedir);
-               break;
-
-       default:
-               error = SET_ERROR(EINVAL);
-               break;
-       }
-
-       VN_RELE(vp);
-       VN_RELE(ZTOV(sharedir));
-
-       ZFS_EXIT(zfsvfs);
-
-       return (error);
-#else
        return (SET_ERROR(ENOTSUP));
-#endif /* HAVE_SMB_SHARE */
 }
 
 /*
index 8925b67004b6694c3e6fba29102c6dad198f6a2b..7b13927bea345d1e4c44461dc053dedf4be6fe6a 100644 (file)
@@ -329,55 +329,6 @@ zfs_znode_hold_exit(zfsvfs_t *zfsvfs, znode_hold_t *zh)
                kmem_cache_free(znode_hold_cache, zh);
 }
 
-int
-zfs_create_share_dir(zfsvfs_t *zfsvfs, dmu_tx_t *tx)
-{
-#ifdef HAVE_SMB_SHARE
-       zfs_acl_ids_t acl_ids;
-       vattr_t vattr;
-       znode_t *sharezp;
-       vnode_t *vp;
-       znode_t *zp;
-       int error;
-
-       vattr.va_mask = AT_MODE|AT_UID|AT_GID|AT_TYPE;
-       vattr.va_mode = S_IFDIR | 0555;
-       vattr.va_uid = crgetuid(kcred);
-       vattr.va_gid = crgetgid(kcred);
-
-       sharezp = kmem_cache_alloc(znode_cache, KM_SLEEP);
-       sharezp->z_moved = 0;
-       sharezp->z_unlinked = 0;
-       sharezp->z_atime_dirty = 0;
-       sharezp->z_zfsvfs = zfsvfs;
-       sharezp->z_is_sa = zfsvfs->z_use_sa;
-       sharezp->z_pflags = 0;
-
-       vp = ZTOV(sharezp);
-       vn_reinit(vp);
-       vp->v_type = VDIR;
-
-       VERIFY(0 == zfs_acl_ids_create(sharezp, IS_ROOT_NODE, &vattr,
-           kcred, NULL, &acl_ids));
-       zfs_mknode(sharezp, &vattr, tx, kcred, IS_ROOT_NODE, &zp, &acl_ids);
-       ASSERT3P(zp, ==, sharezp);
-       ASSERT(!vn_in_dnlc(ZTOV(sharezp))); /* not valid to move */
-       POINTER_INVALIDATE(&sharezp->z_zfsvfs);
-       error = zap_add(zfsvfs->z_os, MASTER_NODE_OBJ,
-           ZFS_SHARES_DIR, 8, 1, &sharezp->z_id, tx);
-       zfsvfs->z_shares_dir = sharezp->z_id;
-
-       zfs_acl_ids_free(&acl_ids);
-       // ZTOV(sharezp)->v_count = 0;
-       sa_handle_destroy(sharezp->z_sa_hdl);
-       kmem_cache_free(znode_cache, sharezp);
-
-       return (error);
-#else
-       return (0);
-#endif /* HAVE_SMB_SHARE */
-}
-
 static void
 zfs_znode_sa_init(zfsvfs_t *zfsvfs, znode_t *zp,
     dmu_buf_t *db, dmu_object_type_t obj_type, sa_handle_t *sa_hdl)
@@ -1977,12 +1928,6 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
        sa_handle_destroy(rootzp->z_sa_hdl);
        kmem_cache_free(znode_cache, rootzp);
 
-       /*
-        * Create shares directory
-        */
-       error = zfs_create_share_dir(zfsvfs, tx);
-       ASSERT(error == 0);
-
        for (i = 0; i != size; i++) {
                avl_destroy(&zfsvfs->z_hold_trees[i]);
                mutex_destroy(&zfsvfs->z_hold_locks[i]);