summaryrefslogtreecommitdiff
path: root/src/VBox/Additions
diff options
context:
space:
mode:
authorFelix Geyer <debfx-pkg@fobos.de>2012-06-21 10:56:05 +0200
committerFelix Geyer <debfx-pkg@fobos.de>2012-06-21 10:56:05 +0200
commitb0bc77b9da451781ff6b93f0e1b470f2bd41537c (patch)
tree8572903af14a7c7f398e36f9b2e9a2d22d4e6994 /src/VBox/Additions
parentd66c35b4c98bbfb0b0dd20ef5fa250fea2715cbc (diff)
downloadvirtualbox-b0bc77b9da451781ff6b93f0e1b470f2bd41537c.tar.gz
Imported Upstream version 4.1.18-dfsgupstream/4.1.18-dfsg
Diffstat (limited to 'src/VBox/Additions')
-rw-r--r--src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibAutoLogon.cpp2
-rw-r--r--src/VBox/Additions/linux/Makefile2
-rw-r--r--src/VBox/Additions/linux/sharedfolders/dirops.c10
-rw-r--r--src/VBox/Additions/linux/sharedfolders/utils.c7
-rw-r--r--src/VBox/Additions/linux/sharedfolders/vfsmod.c5
-rwxr-xr-xsrc/VBox/Additions/solaris/Installer/postinstall.sh50
-rw-r--r--src/VBox/Additions/solaris/Makefile.kmk2
7 files changed, 62 insertions, 16 deletions
diff --git a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibAutoLogon.cpp b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibAutoLogon.cpp
index eb528c98d..25cf3ca39 100644
--- a/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibAutoLogon.cpp
+++ b/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibAutoLogon.cpp
@@ -63,6 +63,7 @@ VBGLR3DECL(int) VbglR3AutoLogonReportStatus(VBoxGuestFacilityStatus enmStatus)
* VMMDevReportGuestStatus implemented we set the appropriate status via
* guest property to have at least something.
*/
+#ifdef VBOX_WITH_GUEST_PROPS
uint32_t u32ClientId = 0;
rc = VbglR3GuestPropConnect(&u32ClientId);
if (RT_SUCCESS(rc))
@@ -124,6 +125,7 @@ VBGLR3DECL(int) VbglR3AutoLogonReportStatus(VBoxGuestFacilityStatus enmStatus)
VbglR3GuestPropDisconnect(u32ClientId);
}
+#endif
}
s_enmLastStatus = enmStatus;
diff --git a/src/VBox/Additions/linux/Makefile b/src/VBox/Additions/linux/Makefile
index 2b89dcad7..c5beef410 100644
--- a/src/VBox/Additions/linux/Makefile
+++ b/src/VBox/Additions/linux/Makefile
@@ -45,6 +45,7 @@ all:
else \
cp vboxsf/vboxsf.o .; \
fi; \
+ echo; \
fi
@if [ -d vboxvideo ]; then \
if [ -f vboxguest/Module.symvers ]; then \
@@ -57,6 +58,7 @@ all:
else \
cp vboxvideo/vboxvideo.o .; \
fi; \
+ echo; \
fi
install:
diff --git a/src/VBox/Additions/linux/sharedfolders/dirops.c b/src/VBox/Additions/linux/sharedfolders/dirops.c
index 4a8144b62..3442f2a32 100644
--- a/src/VBox/Additions/linux/sharedfolders/dirops.c
+++ b/src/VBox/Additions/linux/sharedfolders/dirops.c
@@ -357,6 +357,7 @@ static struct dentry *sf_lookup(struct inode *parent, struct dentry *dentry
goto fail1;
}
sf_new_i->handle = SHFL_HANDLE_NIL;
+ sf_new_i->force_reread = 0;
ino = iunique(parent->i_sb, 1);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25)
@@ -382,7 +383,11 @@ static struct dentry *sf_lookup(struct inode *parent, struct dentry *dentry
sf_i->force_restat = 0;
dentry->d_time = jiffies;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
+ d_set_d_op(dentry, &sf_dentry_ops);
+#else
dentry->d_op = &sf_dentry_ops;
+#endif
d_add(dentry, inode);
return NULL;
@@ -446,8 +451,13 @@ static int sf_instantiate(struct inode *parent, struct dentry *dentry,
SET_INODE_INFO(inode, sf_new_i);
dentry->d_time = jiffies;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
+ d_set_d_op(dentry, &sf_dentry_ops);
+#else
dentry->d_op = &sf_dentry_ops;
+#endif
sf_new_i->force_restat = 1;
+ sf_new_i->force_reread = 0;
d_instantiate(dentry, inode);
diff --git a/src/VBox/Additions/linux/sharedfolders/utils.c b/src/VBox/Additions/linux/sharedfolders/utils.c
index d6eb2ec1c..e8971988e 100644
--- a/src/VBox/Additions/linux/sharedfolders/utils.c
+++ b/src/VBox/Additions/linux/sharedfolders/utils.c
@@ -258,6 +258,13 @@ sf_dentry_revalidate(struct dentry *dentry, struct nameidata *nd)
#endif
{
TRACE();
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
+ /* see Documentation/filesystems/vfs.txt */
+ if (nd && nd->flags & LOOKUP_RCU)
+ return -ECHILD;
+#endif
+
if (sf_inode_revalidate(dentry))
return 0;
diff --git a/src/VBox/Additions/linux/sharedfolders/vfsmod.c b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
index c27040b83..001ec45c7 100644
--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c
+++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
@@ -240,6 +240,7 @@ static int sf_read_super_aux(struct super_block *sb, void *data, int flags)
sf_i->path->u16Size = 2;
sf_i->path->String.utf8[0] = '/';
sf_i->path->String.utf8[1] = 0;
+ sf_i->force_reread = 0;
err = sf_stat(__func__, sf_g, sf_i->path, &fsinfo, 0);
if (err)
@@ -373,7 +374,11 @@ static void sf_evict_inode(struct inode *inode)
TRACE();
truncate_inode_pages(&inode->i_data, 0);
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
+ clear_inode(inode);
+# else
end_writeback(inode);
+# endif
sf_i = GET_INODE_INFO(inode);
if (!sf_i)
diff --git a/src/VBox/Additions/solaris/Installer/postinstall.sh b/src/VBox/Additions/solaris/Installer/postinstall.sh
index 574fdfc36..12c1874fc 100755
--- a/src/VBox/Additions/solaris/Installer/postinstall.sh
+++ b/src/VBox/Additions/solaris/Installer/postinstall.sh
@@ -118,7 +118,7 @@ fi
if test "$currentzone" = "global"; then
# vboxguest.sh would've been installed, we just need to call it.
echo "Configuring VirtualBox guest kernel module..."
- # stop all previous moduels (vboxguest, vboxfs) and start only starts vboxguest
+ # stop all previous moduels (vboxguest, vboxfs) and start only starts vboxguest
$vboxadditions_path/vboxguest.sh stopall silentunload
$vboxadditions_path/vboxguest.sh start
@@ -161,7 +161,7 @@ if test ! -z "$xorgbin"; then
case "$xorgversion" in
1.3.* )
- vboxmouse_src="vboxmouse_drv_71.so"
+ vboxmouse_src="vboxmouse_drv_13.so"
vboxvideo_src="vboxvideo_drv_13.so"
;;
1.4.* )
@@ -310,14 +310,9 @@ if test ! -z "$xorgbin"; then
/usr/sbin/removef $PKGINST $vboxadditions_path/$xorgconf_unfit 1>/dev/null
rm -f $vboxadditions_path/$xorgconf_unfit
fi
- case "$xorgversion" in
- 7.1.* | 7.2.* | 6.9.* | 7.0.* | 1.3.* )
- $vboxadditions_path/x11config.pl
- ;;
- 1.4.* | 1.5.* | 1.6.* | 1.7.* | 1.8.* | 1.9.* | 1.10.*)
- $vboxadditions_path/x11config15sol.pl
- ;;
- esac
+
+ # Adjust xorg.conf with mouse and video driver sections
+ $vboxadditions_path/x11config15sol.pl
fi
fi
@@ -412,10 +407,37 @@ fi
if test "$currentzone" = "global"; then
/usr/sbin/devfsadm -i vboxguest
- # Setup our VBoxService SMF service
- echo "Configuring service..."
- /usr/sbin/svcadm restart svc:/system/manifest-import:default
- /usr/sbin/svcadm enable -s virtualbox/vboxservice
+ # Setup VBoxService & start the service automatically
+ echo "Configuring service (this might take a while)..."
+ cmax=32
+ cslept=0
+ success=0
+ sync
+
+ # Since S11 the way to import a manifest is via restarting manifest-import which is asynchronous and can
+ # take a while to complete, using disable/enable -s doesn't work either. So we restart it, and poll in
+ # 1 second intervals to see if our service has been successfully imported and timeout after 'cmax' seconds.
+ /usr/sbin/svcadm restart svc:system/manifest-import:default
+ is_import=`/usr/bin/svcs virtualbox/vboxservice >/dev/null 2>&1`
+ while test $? -ne 0;
+ do
+ sleep 1
+ cslept=`expr $cslept + 1`
+ if test "$cslept" -eq "$cmax"; then
+ success=1
+ break
+ fi
+ is_import=`/usr/bin/svcs virtualbox/vboxservice >/dev/null 2>&1`
+ done
+ if test "$success" -eq 0; then
+ echo "Enabling service..."
+ /usr/sbin/svcadm enable -s virtualbox/vboxservice
+ else
+ echo "## VBoxService import failed."
+ echo "## See /var/svc/log/system-manifest-import:default.log for details."
+ # Exit as partially failed installation
+ retval=2
+ fi
# Update boot archive
BOOTADMBIN=/sbin/bootadm
diff --git a/src/VBox/Additions/solaris/Makefile.kmk b/src/VBox/Additions/solaris/Makefile.kmk
index 0646da3c0..d5c5786d0 100644
--- a/src/VBox/Additions/solaris/Makefile.kmk
+++ b/src/VBox/Additions/solaris/Makefile.kmk
@@ -204,7 +204,6 @@ SOLARIS_ADD_XORG_DRIVERS = \
SOLARIS_ADD_COMMON_BINS = \
vboxguest.sh \
- x11config.pl \
x11config15sol.pl \
x11restore.pl \
VBox.sh \
@@ -278,7 +277,6 @@ $(PATH_STAGE_BIN)/additions/$(PKGFILENAME): \
$(VBOX_PATH_SOLARIS_ADDITION_INSTALLER)/vboxservice.xml \
$(VBOX_PATH_SOLARIS_ADDITION_INSTALLER)/VBox.sh \
$(VBOX_PATH_X11_ADDITION_INSTALLER)/98vboxadd-xclient \
- $(VBOX_PATH_X11_ADDITION_INSTALLER)/x11config.pl \
$(VBOX_PATH_X11_ADDITION_INSTALLER)/x11config15sol.pl \
$(VBOX_PATH_X11_ADDITION_INSTALLER)/x11restore.pl \
$(VBOX_PATH_X11_ADDITION_INSTALLER)/solaris_xorg.conf \