From owner-svn-soc-all@FreeBSD.ORG Sun Sep 1 08:10:06 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8862D7FE for ; Sun, 1 Sep 2013 08:10:06 +0000 (UTC) (envelope-from oleksandr@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 686ED2CDE for ; Sun, 1 Sep 2013 08:10:06 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r818A66o034478 for ; Sun, 1 Sep 2013 08:10:06 GMT (envelope-from oleksandr@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r818A6Ze034458 for svn-soc-all@FreeBSD.org; Sun, 1 Sep 2013 08:10:06 GMT (envelope-from oleksandr@FreeBSD.org) Date: Sun, 1 Sep 2013 08:10:06 GMT Message-Id: <201309010810.r818A6Ze034458@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to oleksandr@FreeBSD.org using -f From: oleksandr@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r256792 - soc2013/oleksandr/ports/emulators/virtualbox-ose-additions/files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Sep 2013 08:10:06 -0000 Author: oleksandr Date: Sun Sep 1 08:10:06 2013 New Revision: 256792 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256792 Log: Correct name of file's and structure's remplace allocating of memory to malloc(9) incstead of RTMemAllocZ() virtualbox internal function Modified: soc2013/oleksandr/ports/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-freebsd.kmk Modified: soc2013/oleksandr/ports/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-freebsd.kmk ============================================================================== --- soc2013/oleksandr/ports/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-freebsd.kmk Sun Sep 1 07:57:53 2013 (r256791) +++ soc2013/oleksandr/ports/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-freebsd.kmk Sun Sep 1 08:10:06 2013 (r256792) @@ -1,43 +1,426 @@ +Index: src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk +=================================================================== +--- src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk (revision 4) ++++ src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk (working copy) +@@ -32,13 +32,14 @@ + . \ + $(vboxvfs_0_OUTDIR) + vboxvfs_SOURCES = \ +- vboxvfs_vfsops.c \ +- vboxvfs_vnops.c ++ vboxfs_vfsops.c \ ++ vboxfs_vnops.c \ ++ vboxfs_prov.c + vboxvfs_LIBS = \ + $(VBOX_LIB_VBGL_R0) \ + $(VBOX_LIB_IPRT_GUEST_R0) + vboxvfs_DEPS = \ +- $$(vboxvfs_0_OUTDIR)/vnode_if.h \ ++# $$(vboxvfs_0_OUTDIR)/vnode_if.h \ + $$(vboxvfs_0_OUTDIR)/vnode_if_newproto.h \ + $$(vboxvfs_0_OUTDIR)/vnode_if_typedef.h + vboxvfs_CLEAN += $(vboxvfs_DEPS) +Index: src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c +=================================================================== +--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c (revision 4) ++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vnops.c (working copy) +@@ -1,241 +0,0 @@ +-/* $Id: vboxvfs_vnops.c $ */ +-/** @file +- * Description. +- */ +- +-/* +- * Copyright (C) 2008-2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#include "vboxvfs.h" +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-#include +-#include +- +-/* +- * Prototypes for VBOXVFS vnode operations +- */ +-static vop_create_t vboxvfs_create; +-static vop_mknod_t vboxvfs_mknod; +-static vop_open_t vboxvfs_open; +-static vop_close_t vboxvfs_close; +-static vop_access_t vboxvfs_access; +-static vop_getattr_t vboxvfs_getattr; +-static vop_setattr_t vboxvfs_setattr; +-static vop_read_t vboxvfs_read; +-static vop_write_t vboxvfs_write; +-static vop_fsync_t vboxvfs_fsync; +-static vop_remove_t vboxvfs_remove; +-static vop_link_t vboxvfs_link; +-static vop_lookup_t vboxvfs_lookup; +-static vop_rename_t vboxvfs_rename; +-static vop_mkdir_t vboxvfs_mkdir; +-static vop_rmdir_t vboxvfs_rmdir; +-static vop_symlink_t vboxvfs_symlink; +-static vop_readdir_t vboxvfs_readdir; +-static vop_strategy_t vboxvfs_strategy; +-static vop_print_t vboxvfs_print; +-static vop_pathconf_t vboxvfs_pathconf; +-static vop_advlock_t vboxvfs_advlock; +-static vop_getextattr_t vboxvfs_getextattr; +-static vop_ioctl_t vboxvfs_ioctl; +-static vop_getpages_t vboxvfs_getpages; +-static vop_inactive_t vboxvfs_inactive; +-static vop_putpages_t vboxvfs_putpages; +-static vop_reclaim_t vboxvfs_reclaim; +- +-struct vop_vector vboxvfs_vnodeops = { +- .vop_default = &default_vnodeops, +- +- .vop_access = vboxvfs_access, +- .vop_advlock = vboxvfs_advlock, +- .vop_close = vboxvfs_close, +- .vop_create = vboxvfs_create, +- .vop_fsync = vboxvfs_fsync, +- .vop_getattr = vboxvfs_getattr, +- .vop_getextattr = vboxvfs_getextattr, +- .vop_getpages = vboxvfs_getpages, +- .vop_inactive = vboxvfs_inactive, +- .vop_ioctl = vboxvfs_ioctl, +- .vop_link = vboxvfs_link, +- .vop_lookup = vboxvfs_lookup, +- .vop_mkdir = vboxvfs_mkdir, +- .vop_mknod = vboxvfs_mknod, +- .vop_open = vboxvfs_open, +- .vop_pathconf = vboxvfs_pathconf, +- .vop_print = vboxvfs_print, +- .vop_putpages = vboxvfs_putpages, +- .vop_read = vboxvfs_read, +- .vop_readdir = vboxvfs_readdir, +- .vop_reclaim = vboxvfs_reclaim, +- .vop_remove = vboxvfs_remove, +- .vop_rename = vboxvfs_rename, +- .vop_rmdir = vboxvfs_rmdir, +- .vop_setattr = vboxvfs_setattr, +- .vop_strategy = vboxvfs_strategy, +- .vop_symlink = vboxvfs_symlink, +- .vop_write = vboxvfs_write, +-}; +- +-static int vboxvfs_access(struct vop_access_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_open(struct vop_open_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_close(struct vop_close_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_getattr(struct vop_getattr_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_setattr(struct vop_setattr_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_read(struct vop_read_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_write(struct vop_write_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_create(struct vop_create_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_remove(struct vop_remove_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_rename(struct vop_rename_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_link(struct vop_link_args *ap) +-{ +- return EOPNOTSUPP; +-} +- +-static int vboxvfs_symlink(struct vop_symlink_args *ap) +-{ +- return EOPNOTSUPP; +-} +- +-static int vboxvfs_mknod(struct vop_mknod_args *ap) +-{ +- return EOPNOTSUPP; +-} +- +-static int vboxvfs_mkdir(struct vop_mkdir_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_rmdir(struct vop_rmdir_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_readdir(struct vop_readdir_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_fsync(struct vop_fsync_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_print (struct vop_print_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_pathconf (struct vop_pathconf_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_strategy (struct vop_strategy_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_ioctl(struct vop_ioctl_args *ap) +-{ +- return ENOTTY; +-} +- +-static int vboxvfs_getextattr(struct vop_getextattr_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_advlock(struct vop_advlock_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_lookup(struct vop_lookup_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_inactive(struct vop_inactive_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_reclaim(struct vop_reclaim_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_getpages(struct vop_getpages_args *ap) +-{ +- return 0; +-} +- +-static int vboxvfs_putpages(struct vop_putpages_args *ap) +-{ +- return 0; +-} +- +Index: src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h +=================================================================== +--- src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h (revision 4) ++++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h (working copy) +@@ -1,92 +0,0 @@ +-/* $Id: vboxvfs.h $ */ +-/** @file +- * Description. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#ifndef ___VBOXVFS_H___ +-#define ___VBOXVFS_H___ +- +-#define VBOXVFS_VFSNAME "vboxvfs" +-#define VBOXVFS_VERSION 1 +- +-#define MAX_HOST_NAME 256 +-#define MAX_NLS_NAME 32 +- +-struct vboxvfs_mount_info { +- char name[MAX_HOST_NAME]; +- char nls_name[MAX_NLS_NAME]; +- int uid; +- int gid; +- int ttl; +-}; +- +-#ifdef _KERNEL +- +-#include "../../common/VBoxGuestLib/VBoxGuestR0LibSharedFolders.h" +-#include +-#include +- +-struct vboxvfsmount { +- uid_t uid; +- gid_t gid; +- mode_t file_mode; +- mode_t dir_mode; +- struct mount *mp; +- struct ucred *owner; +- u_int flags; +- long nextino; +- int caseopt; +- int didrele; +-}; +- +-/* structs - stolen from the linux shared module code */ +-struct sf_glob_info { +- VBSFMAP map; +-/* struct nls_table *nls;*/ +- int ttl; +- int uid; +- int gid; +- struct vnode *vnode_root; +-}; +- +-struct sf_inode_info { +- SHFLSTRING *path; +- int force_restat; +-}; +- +-#if 0 +-struct sf_dir_info { +- struct list_head info_list; +-}; +-#endif +- +-struct sf_dir_buf { +- size_t nb_entries; +- size_t free_bytes; +- size_t used_bytes; +- void *buf; +-#if 0 +- struct list_head head; +-#endif +-}; +- +-struct sf_reg_info { +- SHFLHANDLE handle; +-}; +- +-#endif /* KERNEL */ +- +-#endif /* !___VBOXVFS_H___ */ +- Index: src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c =================================================================== --- src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c (revision 4) +++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs_vfsops.c (working copy) -@@ -14,13 +14,13 @@ - * VirtualBox OSE distribution. VirtualBox OSE is distributed in the - * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. - */ +@@ -1,258 +0,0 @@ +-/* $Id: vboxvfs_vfsops.c $ */ +-/** @file +- * Description. +- */ +- +-/* +- * Copyright (C) 2008-2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ - -#include "vboxvfs.h" -+#include - #include - #include - #include - #include - #include -+#include - #include - #include - #include -@@ -29,10 +29,14 @@ - #include - #include - +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- -#include -+#include "vboxvfs.h" - - #define VFSMP2SFGLOBINFO(mp) ((struct sf_glob_info *)mp->mnt_data) - -+#ifdef MALLOC_DECLARE -+MALLOC_DEFINE(M_VBOXVFS, "vboxvfs", "VBOX VFS"); -+#endif -+ - static int vboxvfs_version = VBOXVFS_VERSION; - - SYSCTL_NODE(_vfs, OID_AUTO, vboxvfs, CTLFLAG_RW, 0, "VirtualBox shared filesystem"); -@@ -51,15 +55,15 @@ - static vfs_unmount_t vboxvfs_unmount; - - static struct vfsops vboxvfs_vfsops = { +- +-#define VFSMP2SFGLOBINFO(mp) ((struct sf_glob_info *)mp->mnt_data) +- +-static int vboxvfs_version = VBOXVFS_VERSION; +- +-SYSCTL_NODE(_vfs, OID_AUTO, vboxvfs, CTLFLAG_RW, 0, "VirtualBox shared filesystem"); +-SYSCTL_INT(_vfs_vboxvfs, OID_AUTO, version, CTLFLAG_RD, &vboxvfs_version, 0, ""); +- +-/* global connection to the host service. */ +-static VBSFCLIENT g_vboxSFClient; +- +-static vfs_init_t vboxvfs_init; +-static vfs_uninit_t vboxvfs_uninit; +-static vfs_cmount_t vboxvfs_cmount; +-static vfs_mount_t vboxvfs_mount; +-static vfs_root_t vboxvfs_root; +-static vfs_quotactl_t vboxvfs_quotactl; +-static vfs_statfs_t vboxvfs_statfs; +-static vfs_unmount_t vboxvfs_unmount; +- +-static struct vfsops vboxvfs_vfsops = { - .vfs_init = vboxvfs_init, - .vfs_cmount = vboxvfs_cmount, - .vfs_mount = vboxvfs_mount, @@ -47,66 +430,40 @@ - .vfs_sync = vfs_stdsync, - .vfs_uninit = vboxvfs_uninit, - .vfs_unmount = vboxvfs_unmount, -+ .vfs_init = vboxvfs_init, -+ .vfs_cmount = vboxvfs_cmount, -+ .vfs_mount = vboxvfs_mount, -+ .vfs_quotactl = vboxvfs_quotactl, -+ .vfs_root = vboxvfs_root, -+ .vfs_statfs = vboxvfs_statfs, -+ .vfs_sync = vfs_stdsync, -+ .vfs_uninit = vboxvfs_uninit, -+ .vfs_unmount = vboxvfs_unmount, - }; - - -@@ -66,193 +70,239 @@ - VFS_SET(vboxvfs_vfsops, vboxvfs, VFCF_NETWORK); - MODULE_DEPEND(vboxvfs, vboxguest, 1, 1, 1); - +-}; +- +- +-VFS_SET(vboxvfs_vfsops, vboxvfs, VFCF_NETWORK); +-MODULE_DEPEND(vboxvfs, vboxguest, 1, 1, 1); +- -static int vboxvfs_cmount(struct mntarg *ma, void * data, int flags, struct thread *td) -+static int vboxvfs_cmount(struct mntarg *ma, void *data, uint64_t flags) - { +-{ - struct vboxvfs_mount_info args; - int rc = 0; -+ struct vboxvfs_mount_info args; -+ int rc = 0; - +- - printf("%s: Enter\n", __FUNCTION__); -+ printf("%s: Enter\n", __FUNCTION__); - +- - rc = copyin(data, &args, sizeof(struct vboxvfs_mount_info)); - if (rc) - return rc; -+ rc = copyin(data, &args, sizeof(struct vboxvfs_mount_info)); -+ if (rc) -+ return (rc); - +- - ma = mount_argf(ma, "uid", "%d", args.uid); - ma = mount_argf(ma, "gid", "%d", args.gid); - ma = mount_arg(ma, "from", args.name, -1); -+ ma = mount_argf(ma, "uid", "%d", args.uid); -+ ma = mount_argf(ma, "gid", "%d", args.gid); -+ ma = mount_arg(ma, "from", args.name, -1); - +- - rc = kernel_mount(ma, flags); -+ rc = kernel_mount(ma, flags); - +- - printf("%s: Leave rc=%d\n", __FUNCTION__, rc); -+ printf("%s: Leave rc=%d\n", __FUNCTION__, rc); - +- - return rc; -} -+ return (rc); -+}; - - static const char *vboxvfs_opts[] = { +- +-static const char *vboxvfs_opts[] = { - "uid", "gid", "from", "fstype", "fspath", "errmsg", NULL -+ "uid", "gid", "from", "fstype", "fspath", "errmsg", NULL - }; - +-}; +- -static int vboxvfs_mount(struct mount *mp, struct thread *td) -+static int vboxvfs_mount(struct mount *mp) - { +-{ - int rc; - char *pszShare; - int cbShare, cbOption; @@ -114,228 +471,126 @@ - struct sf_glob_info *pShFlGlobalInfo; - SHFLSTRING *pShFlShareName = NULL; - int cbShFlShareName; -+ int rc; -+ char *pszShare; -+ int cbShare, cbOption; -+ int uid = 0, gid = 0; -+ struct sf_glob_info *pShFlGlobalInfo; -+ SHFLSTRING *pShFlShareName = NULL; -+ int cbShFlShareName; - +- - printf("%s: Enter\n", __FUNCTION__); -+ printf("%s: Enter\n", __FUNCTION__); -+ - +- - if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS)) - return EOPNOTSUPP; -+ if (mp->mnt_flag & (MNT_UPDATE | MNT_ROOTFS)) -+ return (EOPNOTSUPP); - +- - if (vfs_filteropt(mp->mnt_optnew, vboxvfs_opts)) - { - vfs_mount_error(mp, "%s", "Invalid option"); - return EINVAL; - } -+ if (vfs_filteropt(mp->mnt_optnew, vboxvfs_opts)) -+ { -+ vfs_mount_error(mp, "%s", "Invalid option"); -+ return (EINVAL); -+ } - +- - rc = vfs_getopt(mp->mnt_optnew, "from", (void **)&pszShare, &cbShare); - if (rc || pszShare[cbShare-1] != '\0' || cbShare > 0xfffe) - return EINVAL; -+ rc = vfs_getopt(mp->mnt_optnew, "from", (void **)&pszShare, &cbShare); -+ if (rc || pszShare[cbShare-1] != '\0' || cbShare > 0xfffe) -+ return (EINVAL); - +- - rc = vfs_getopt(mp->mnt_optnew, "gid", (void **)&gid, &cbOption); - if ((rc != ENOENT) && (rc || cbOption != sizeof(gid))) - return EINVAL; -+ rc = vfs_getopt(mp->mnt_optnew, "gid", (void **)&gid, &cbOption); -+ if ((rc != ENOENT) && (rc || cbOption != sizeof(gid))) -+ return EINVAL; - +- - rc = vfs_getopt(mp->mnt_optnew, "uid", (void **)&uid, &cbOption); - if ((rc != ENOENT) && (rc || cbOption != sizeof(uid))) - return EINVAL; -+ rc = vfs_getopt(mp->mnt_optnew, "uid", (void **)&uid, &cbOption); -+ if ((rc != ENOENT) && (rc || cbOption != sizeof(uid))) -+ return EINVAL; - +- - pShFlGlobalInfo = RTMemAllocZ(sizeof(struct sf_glob_info)); - if (!pShFlGlobalInfo) - return ENOMEM; -+ pShFlGlobalInfo = RTMemAllocZ(sizeof(struct sf_glob_info)); -+ if (!pShFlGlobalInfo) -+ return ENOMEM; - +- - cbShFlShareName = offsetof (SHFLSTRING, String.utf8) + cbShare + 1; - pShFlShareName = RTMemAllocZ(cbShFlShareName); - if (!pShFlShareName) - return VERR_NO_MEMORY; -+ cbShFlShareName = offsetof (SHFLSTRING, String.utf8) + cbShare + 1; -+ pShFlShareName = RTMemAllocZ(cbShFlShareName); -+ if (!pShFlShareName) -+ return VERR_NO_MEMORY; - +- - pShFlShareName->u16Length = cbShFlShareName; - pShFlShareName->u16Size = cbShFlShareName + 1; - memcpy (pShFlShareName->String.utf8, pszShare, cbShare + 1); -+ pShFlShareName->u16Length = cbShFlShareName; -+ pShFlShareName->u16Size = cbShFlShareName + 1; -+ memcpy (pShFlShareName->String.utf8, pszShare, cbShare + 1); - +- - rc = vboxCallMapFolder (&g_vboxSFClient, pShFlShareName, &pShFlGlobalInfo->map); - RTMemFree(pShFlShareName); -+ rc = vboxCallMapFolder (&g_vboxSFClient, pShFlShareName, &pShFlGlobalInfo->map); -+ RTMemFree(pShFlShareName); - +- - if (RT_FAILURE (rc)) - { - RTMemFree(pShFlGlobalInfo); - printf("vboxCallMapFolder failed rc=%d\n", rc); - return EPROTO; - } -+ if (RT_FAILURE (rc)) -+ { -+ RTMemFree(pShFlGlobalInfo); -+ printf("vboxCallMapFolder failed rc=%d\n", rc); -+ return (EPROTO); -+ } - +- - pShFlGlobalInfo->uid = uid; - pShFlGlobalInfo->gid = gid; -+ pShFlGlobalInfo->uid = uid; -+ pShFlGlobalInfo->gid = gid; - +- - mp->mnt_data = pShFlGlobalInfo; -+ mp->mnt_data = pShFlGlobalInfo; - +- - /* @todo root vnode. */ -+ /* @todo root vnode. */ - +- - vfs_getnewfsid(mp); - vfs_mountedfrom(mp, pszShare); -+ vfs_getnewfsid(mp); -+ vfs_mountedfrom(mp, pszShare); - +- - printf("%s: Leave rc=0\n", __FUNCTION__); -+ printf("%s: Leave rc=0\n", __FUNCTION__); - +- - return 0; -} -+ return (0); -+}; - +- -static int vboxvfs_unmount(struct mount *mp, int mntflags, struct thread *td) -+/* -+ * Unmount a shared folder. -+ * -+ * vboxvfs_unmount umounts the mounted file system. It return 0 -+ * on sucess and any relevant errno on failure. -+ */ -+static int vboxvfs_unmount(struct mount *mp, int mntflags) - { +-{ - struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp); - int rc; - int flags = 0; -+ struct thread *td = curthread; -+ struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp); -+/* struct vboxvfs_mnt *vboxvfsmp; */ -+ int error; -+ int flags = 0; -+ -+/* vboxvfsmp = VFSTOVBOXFS(mp); */ - +- - rc = vboxCallUnmapFolder(&g_vboxSFClient, &pShFlGlobalInfo->map); - if (RT_FAILURE(rc)) - printf("Failed to unmap shared folder\n"); -+ error = vboxCallUnmapFolder(&g_vboxSFClient, &pShFlGlobalInfo->map); -+ if (RT_FAILURE(error)) -+ printf("Failed to unmap shared folder\n"); - +- - if (mntflags & MNT_FORCE) - flags |= FORCECLOSE; -+ if (mntflags & MNT_FORCE) -+ flags |= FORCECLOSE; - +- - /* There is 1 extra root vnode reference (vnode_root). */ - rc = vflush(mp, 1, flags, td); - if (rc) - return rc; -+ /* There is 1 extra root vnode reference (vnode_root). */ -+ error = vflush(mp, 1, flags, td); -+ if (error) -+ return (error); - - +- +- - RTMemFree(pShFlGlobalInfo); - mp->mnt_data = NULL; -+ RTMemFree(pShFlGlobalInfo); -+ mp->mnt_data = NULL; - +- - return 0; -+ return (0); - } - +-} +- -static int vboxvfs_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td) -+static int vboxvfs_root(struct mount *mp, int flags, struct vnode **vpp) - { +-{ - int rc = 0; - struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp); - struct vnode *vp; -+ int rc = 0; -+ struct sf_glob_info *pShFlGlobalInfo = VFSMP2SFGLOBINFO(mp); -+ struct vnode *vp; - +- - printf("%s: Enter\n", __FUNCTION__); -+ printf("%s: Enter\n", __FUNCTION__); - +- - vp = pShFlGlobalInfo->vnode_root; - VREF(vp); -+ vp = pShFlGlobalInfo->vnode_root; -+ VREF(vp); - +- - vn_lock(vp, flags | LK_RETRY, td); - *vpp = vp; -+// vn_lock(vp, flags | LK_RETRY, td); -+ *vpp = vp; - +- - printf("%s: Leave\n", __FUNCTION__); -+ printf("%s: Leave\n", __FUNCTION__); - +- - return rc; -+ return (rc); - } - +-} +- -static int vboxvfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg, struct thread *td) -+/* -+ * Do operation associated with quotas, not supported -+ */ -+static int vboxvfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg) - { +-{ - return EOPNOTSUPP; -+ return (EOPNOTSUPP); - } - - int vboxvfs_init(struct vfsconf *vfsp) - { +-} +- +-int vboxvfs_init(struct vfsconf *vfsp) +-{ - int rc; -+ int rc = -1; - +- - /* Initialize the R0 guest library. */ - rc = vboxInit(); - if (RT_FAILURE(rc)) - return ENXIO; -+ /* Initialize the R0 guest library. */ -+ rc = vboxInit(); -+ if (RT_FAILURE(rc)) -+ { -+ printf("sfprov_connect: vboxConnect() failed rc=%d\n", rc); -+ return ENXIO; -+ } - +- - /* Connect to the host service. */ - rc = vboxConnect(&g_vboxSFClient); - if (RT_FAILURE(rc)) @@ -344,15 +599,7 @@ - vboxUninit(); - return ENXIO; - } -+ /* Connect to the host service. */ -+ rc = vboxConnect(&g_vboxSFClient); -+ if (RT_FAILURE(rc)) -+ { -+ printf("Failed to get connection to host! rc=%d\n", rc); -+ vboxUninit(); -+ return ENXIO; -+ } - +- - rc = vboxCallSetUtf8 (&g_vboxSFClient); - if (RT_FAILURE (rc)) - { @@ -361,95 +608,62 @@ - vboxUninit(); - return EPROTO; - } -+ rc = vboxCallSetUtf8 (&g_vboxSFClient); -+ if (RT_FAILURE (rc)) -+ { -+ printf("vboxCallSetUtf8 failed, rc=%d\n", rc); -+ vboxDisconnect(&g_vboxSFClient); -+ vboxUninit(); -+ return EPROTO; -+ } - +- - printf("Successfully loaded shared folder module\n"); -+ printf("Successfully loaded shared folder module\n"); - +- - return 0; -+ return (0); - } - - int vboxvfs_uninit(struct vfsconf *vfsp) - { +-} +- +-int vboxvfs_uninit(struct vfsconf *vfsp) +-{ - vboxDisconnect(&g_vboxSFClient); - vboxUninit(); -+ vboxDisconnect(&g_vboxSFClient); -+ vboxUninit(); - +- - return 0; -+ return (0); - } - +-} +- -int vboxvfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td) -+/* -+ * Get filesystem statistics. -+ */ -+int vboxvfs_statfs(struct mount *mp, struct statfs *sbp) - { +-{ - return 0; -+ struct vboxvfs_mnt *vboxvfsmp; -+ sffs_fsinfo_t fsinfo; -+// dev32_t d32; -+ int error; -+ -+ vboxvfsmp = VFSTOVBOXFS(mp); -+ -+ bzero(sbp, sizeof(*sbp)); -+ error = sfprov_get_fsinfo(vboxvfsmp->sf_handle, &fsinfo); -+ if (error != 0) -+ return (error); +-} +Index: src/VBox/Additions/freebsd/vboxvfs/vboxfs.h +=================================================================== +--- src/VBox/Additions/freebsd/vboxvfs/vboxfs.h (revision 0) ++++ src/VBox/Additions/freebsd/vboxvfs/vboxfs.h (working copy) +@@ -0,0 +1,326 @@ ++/* $Id: vboxfs.h $ */ ++/** @file ++ * Description. ++ */ + -+ sbp->f_bsize = fsinfo.blksize; ++/* ++ * Copyright (C) 2010 Oracle Corporation ++ * ++ * This file is part of VirtualBox Open Source Edition (OSE), as ++ * available from http://www.virtualbox.org. This file is free software; ++ * you can redistribute it and/or modify it under the terms of the GNU ++ * General Public License (GPL) as published by the Free Software ++ * Foundation, in version 2 as it comes in the "COPYING" file of the ++ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the ++ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. ++ */ + -+ sbp->f_bfree = fsinfo.blksavail; -+ sbp->f_bavail = fsinfo.blksavail; -+ sbp->f_files = fsinfo.blksavail / 4; /* some kind of reasonable value */ -+ sbp->f_ffree = fsinfo.blksavail / 4; ++#ifndef ___VBOXVFS_H___ ++#define ___VBOXVFS_H___ + -+ sbp->f_blocks = fsinfo.blksused + sbp->f_bavail; -+#if 0 -+ (void) cmpldev(&d32, vfsp->vfs_dev); -+ sbp->f_fsid = d32; -+#endif -+ sbp->f_namemax = fsinfo.maxnamesize; ++#define VBOXVFS_VFSNAME "vboxfs" ++#define VBOXVFS_VERSION 1 + -+ return (0); - } -Index: src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h -=================================================================== ---- src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h (revision 4) -+++ src/VBox/Additions/freebsd/vboxvfs/vboxvfs.h (working copy) -@@ -21,46 +21,200 @@ - #define VBOXVFS_VFSNAME "vboxvfs" - #define VBOXVFS_VERSION 1 - --#define MAX_HOST_NAME 256 --#define MAX_NLS_NAME 32 +#define MAX_HOST_NAME 256 +#define MAX_NLS_NAME 32 +//#define MODEMASK 07777 /* mode bits plus permission bits */ +/** Helper macros */ -+#define VFSTOVBOXFS(mp) ((struct vboxvfs_mnt *)((mp)->mnt_data)) -+#define VTOVBOXFS(vp) ((struct vboxvfs_node *)(vp)->v_data) - --struct vboxvfs_mount_info { -- char name[MAX_HOST_NAME]; -- char nls_name[MAX_NLS_NAME]; -- int uid; -- int gid; -- int ttl; --}; ++#define VFSTOVBOXFS(mp) ((struct vboxfs_mnt *)((mp)->mnt_data)) ++#define VTOVBOXFS(vp) ((struct vboxfs_node *)(vp)->v_data) ++ +MALLOC_DECLARE(M_VBOXVFS); - - #ifdef _KERNEL ++ ++#ifdef _KERNEL +#include "../../../../../include/iprt/nocrt/limits.h" +#include "../../../../../include/iprt/alloc.h" +#include "../../../../../include/iprt/asm.h" @@ -492,33 +706,20 @@ +#include "../../../../../include/iprt/time.h" +#include "../../../../../include/iprt/types.h" +#include "../../../../../include/iprt/uni.h" - ++ +#include "../../common/VBoxGuestLib/SysHlp.h" - #include "../../common/VBoxGuestLib/VBoxGuestR0LibSharedFolders.h" - #include --#include ++#include "../../common/VBoxGuestLib/VBoxGuestR0LibSharedFolders.h" ++#include +#include +#include - --struct vboxvfsmount { -- uid_t uid; -- gid_t gid; -- mode_t file_mode; -- mode_t dir_mode; -- struct mount *mp; -- struct ucred *owner; -- u_int flags; -- long nextino; -- int caseopt; -- int didrele; ++ +/* + * representation of an active mount point *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***