File vbox-vboxfs-2.6.25 of Package virtualbox-ose
---
src/VBox/Additions/linux/sharedfolders/Makefile.kmk | 4 ++--
src/VBox/Additions/linux/sharedfolders/dirops.c | 17 +++++++++++++++++
src/VBox/Additions/linux/sharedfolders/vfsmod.c | 8 ++++++++
3 files changed, 27 insertions(+), 2 deletions(-)
--- a/src/VBox/Additions/linux/sharedfolders/Makefile.kmk
+++ b/src/VBox/Additions/linux/sharedfolders/Makefile.kmk
@@ -31,11 +31,11 @@ include files_vboxvfs
#
# Install the source.
#
-vboxvfs-bin_INST = $(INST_ADDITIONS)/src/vboxvfs
+vboxvfs-bin_INST = $(INST_ADDITIONS)src/vboxvfs/
vboxvfs-bin_MODE = a+r,u+w
vboxvfs-bin_SOURCES = $(subst ",,$(FILES_VBOXVFS_NOBIN))
-vboxvfs-sh_INST = $(INST_ADDITIONS)/src/vboxvfs
+vboxvfs-sh_INST = $(INST_ADDITIONS)src/vboxvfs/
vboxvfs-sh_MODE = a+rx,u+w
vboxvfs-sh_SOURCES = $(subst ",,$(FILES_VBOXVFS_BIN))
--- a/src/VBox/Additions/linux/sharedfolders/dirops.c
+++ b/src/VBox/Additions/linux/sharedfolders/dirops.c
@@ -286,7 +286,11 @@ sf_lookup (struct inode *parent, struct
}
ino = iunique (parent->i_sb, 1);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 4, 25)
+ inode = iget_locked (parent->i_sb, ino);
+#else
inode = iget (parent->i_sb, ino);
+#endif
if (!inode) {
elog2 ("iget failed\n");
err = -ENOMEM; /* XXX: ??? */
@@ -296,6 +300,10 @@ sf_lookup (struct inode *parent, struct
SET_INODE_INFO (inode, sf_new_i);
sf_init_inode (sf_g, inode, &fsinfo);
sf_new_i->path = path;
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 4, 25)
+ unlock_new_inode(inode);
+#endif
}
sf_i->force_restat = 0;
@@ -338,7 +346,11 @@ sf_instantiate (const char *caller, stru
}
ino = iunique (parent->i_sb, 1);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 4, 25)
+ inode = iget_locked (parent->i_sb, ino);
+#else
inode = iget (parent->i_sb, ino);
+#endif
if (!inode) {
elog3 ("%s: %s: iget failed\n", caller, __func__);
err = -ENOMEM;
@@ -354,6 +366,11 @@ sf_instantiate (const char *caller, stru
sf_new_i->force_restat = 1;
d_instantiate (dentry, inode);
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 4, 25)
+ unlock_new_inode(inode);
+#endif
+
return 0;
fail1:
--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c
+++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
@@ -257,7 +257,11 @@ sf_read_super_aux (struct super_block *s
sb->s_blocksize = 1024;
sb->s_op = &sf_super_ops;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 4, 25)
+ iroot = iget_locked (sb, 0);
+#else
iroot = iget (sb, 0);
+#endif
if (!iroot) {
err = -ENOMEM; /* XXX */
elog2 ("could not get root inode\n");
@@ -267,6 +271,10 @@ sf_read_super_aux (struct super_block *s
sf_init_inode (sf_g, iroot, &fsinfo);
SET_INODE_INFO (iroot, sf_i);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 4, 25)
+ unlock_new_inode(iroot);
+#endif
+
droot = d_alloc_root (iroot);
if (!droot) {
err = -ENOMEM; /* XXX */