/* * Obtain the tree attributes: volume name, typename and flags. */ static int smb_tree_getattr(const smb_share_t *si, smb_node_t *node, smb_tree_t *tree) { vfs_t *vfsp = SMB_NODE_VFS(node); ASSERT(vfsp); if (getvfs(&vfsp->vfs_fsid) != vfsp) return (ESTALE); smb_tree_get_volname(vfsp, tree); smb_tree_get_flags(si, vfsp, tree); VFS_RELE(vfsp); return (0); }
/* * Convert an fhandle into a vnode. * Uses the file id (fh_len + fh_data) in the fhandle to get the vnode. * WARNING: users of this routine must do a VN_RELE on the vnode when they * are done with it. * This is just like nfs_fhtovp() but without the exportinfo argument. */ static vnode_t * lm_fhtovp(fhandle3_t *fh) { vfs_t *vfsp; vnode_t *vp; int error; vfsp = getvfs(&fh->_fh3_fsid); if (vfsp == NULL) return (NULL); /* LINTED E_BAD_PTR_CAST_ALIGN */ error = VFS_VGET(vfsp, &vp, (fid_t *)&(fh->_fh3_len)); VFS_RELE(vfsp); if (error || vp == NULL) return (NULL); return (vp); }