diff --git a/package/fuse/Makefile b/package/fuse/Makefile
index 8d280e163e2bc63d5ddb98060b9b4f06aa029448..2376eaae33a1c6b54f9beef90adaa5fad5bab1ac 100644
--- a/package/fuse/Makefile
+++ b/package/fuse/Makefile
@@ -10,12 +10,12 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=fuse
-PKG_VERSION:=2.7.1
+PKG_VERSION:=2.7.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_MD5SUM:=f95b4a238a3df5a92e9013ecb55c2c17
+PKG_MD5SUM:=98563fc7b265b7479a3178181cbcf59a
 
 include $(INCLUDE_DIR)/package.mk
 
diff --git a/package/fuse/patches/100-cross_compile.patch b/package/fuse/patches/100-cross_compile.patch
index 2ce83c46f671114b5b709cc9cf9c6a4766edc91c..54a4d590cf60e6582e875bebcda862d3b07e15cb 100644
--- a/package/fuse/patches/100-cross_compile.patch
+++ b/package/fuse/patches/100-cross_compile.patch
@@ -1,7 +1,6 @@
-Index: fuse-2.6.5/kernel/configure
-===================================================================
---- fuse-2.6.5.orig/kernel/configure	2007-06-23 13:03:50.000000000 +0200
-+++ fuse-2.6.5/kernel/configure	2007-06-23 13:03:50.000000000 +0200
+diff -Nru fuse-2.7.3.orig/kernel/configure fuse-2.7.3/kernel/configure
+--- fuse-2.7.3.orig/kernel/configure	2008-02-19 15:00:19.000000000 -0500
++++ fuse-2.7.3/kernel/configure	2008-03-17 14:10:14.000000000 -0400
 @@ -1851,7 +1851,9 @@
  
  	{ echo "$as_me:$LINENO: checking kernel source version" >&5
diff --git a/package/fuse/patches/102-no_depmod.patch b/package/fuse/patches/102-no_depmod.patch
index 899d3077d433631b1ded81f849153c04087486d7..ee86942203d5f561793137b41afa215cd856b9a0 100644
--- a/package/fuse/patches/102-no_depmod.patch
+++ b/package/fuse/patches/102-no_depmod.patch
@@ -1,7 +1,6 @@
-Index: fuse-2.6.5/kernel/Makefile.in
-===================================================================
---- fuse-2.6.5.orig/kernel/Makefile.in	2007-06-23 13:03:50.000000000 +0200
-+++ fuse-2.6.5/kernel/Makefile.in	2007-06-23 13:03:50.000000000 +0200
+diff -Nru fuse-2.7.3.orig/kernel/Makefile.in fuse-2.7.3/kernel/Makefile.in
+--- fuse-2.7.3.orig/kernel/Makefile.in	2006-12-09 13:51:13.000000000 -0500
++++ fuse-2.7.3/kernel/Makefile.in	2008-03-17 14:12:32.000000000 -0400
 @@ -25,11 +25,9 @@
  install-y: all
  	$(mkdir_p) $(DESTDIR)$(fusemoduledir)
diff --git a/package/fuse/patches/112-no_break_on_mknod.patch b/package/fuse/patches/112-no_break_on_mknod.patch
index 93e32422547324df9ae7f39830c0d115092b3c24..911d25c12f7494b640881d2133cf8c89ae256654 100644
--- a/package/fuse/patches/112-no_break_on_mknod.patch
+++ b/package/fuse/patches/112-no_break_on_mknod.patch
@@ -1,8 +1,6 @@
-Index: fuse-2.6.5/util/Makefile.in
-===================================================================
---- fuse-2.6.5.orig/util/Makefile.in	2007-06-23 13:03:50.000000000 +0200
-+++ fuse-2.6.5/util/Makefile.in	2007-06-23 13:03:50.000000000 +0200
-@@ -489,7 +489,7 @@
+--- fuse-2.7.3.orig/util/Makefile.in	2008-02-19 15:00:55.000000000 -0500
++++ fuse-2.7.3/util/Makefile.in	2008-03-17 14:14:10.000000000 -0400
+@@ -528,7 +528,7 @@
  install-exec-hook:
  	-chown root $(DESTDIR)$(bindir)/fusermount
  	-chmod u+s $(DESTDIR)$(bindir)/fusermount
diff --git a/package/fuse/patches/200-disable_compat.patch b/package/fuse/patches/200-disable_compat.patch
index d4bb97860583e07045ba4164fe27111960acec7c..12203d3d3dac80ad5f14500ef7d72fd7fa697bc0 100644
--- a/package/fuse/patches/200-disable_compat.patch
+++ b/package/fuse/patches/200-disable_compat.patch
@@ -1,25 +1,22 @@
-Index: fuse-2.7.1/include/fuse_common_compat.h
-===================================================================
---- fuse-2.7.1.orig/include/fuse_common_compat.h	2007-10-20 17:13:51.409738304 +0200
-+++ fuse-2.7.1/include/fuse_common_compat.h	2007-10-20 17:14:26.323727941 +0200
+diff -Nru fuse-2.7.3.orig/include/fuse_common_compat.h fuse-2.7.3/include/fuse_common_compat.h
+--- fuse-2.7.3.orig/include/fuse_common_compat.h	2008-02-19 14:51:23.000000000 -0500
++++ fuse-2.7.3/include/fuse_common_compat.h	2008-03-17 14:55:01.000000000 -0400
 @@ -17,6 +17,7 @@
-     unsigned int keep_cache : 1;
+ 	unsigned int keep_cache : 1;
  };
  
 +#ifndef DISABLE_COMPAT
  int fuse_mount_compat25(const char *mountpoint, struct fuse_args *args);
  
  int fuse_mount_compat22(const char *mountpoint, const char *opts);
-@@ -24,4 +25,4 @@
+@@ -24,3 +25,4 @@
  int fuse_mount_compat1(const char *mountpoint, const char *args[]);
  
  void fuse_unmount_compat22(const char *mountpoint);
--
 +#endif
-Index: fuse-2.7.1/lib/fuse.c
-===================================================================
---- fuse-2.7.1.orig/lib/fuse.c	2007-10-20 17:13:51.417738760 +0200
-+++ fuse-2.7.1/lib/fuse.c	2007-10-20 17:26:30.657005340 +0200
+diff -Nru fuse-2.7.3.orig/lib/fuse.c fuse-2.7.3/lib/fuse.c
+--- fuse-2.7.3.orig/lib/fuse.c	2008-02-19 14:51:25.000000000 -0500
++++ fuse-2.7.3/lib/fuse.c	2008-03-17 15:04:54.000000000 -0400
 @@ -14,8 +14,6 @@
  #include "fuse_lowlevel.h"
  #include "fuse_opt.h"
@@ -29,284 +26,288 @@ Index: fuse-2.7.1/lib/fuse.c
  
  #include <stdio.h>
  #include <string.h>
-@@ -621,127 +619,6 @@
-         fuse_do_prepare_interrupt(req, d);
+@@ -626,129 +624,6 @@
+ 		fuse_do_prepare_interrupt(req, d);
  }
  
 -#ifndef __FreeBSD__
 -
 -static int fuse_compat_open(struct fuse_fs *fs, const char *path,
--                            struct fuse_file_info *fi)
--{
--    int err;
--    if (!fs->compat || fs->compat >= 25)
--        err = fs->op.open(path, fi);
--    else if (fs->compat == 22) {
--        struct fuse_file_info_compat tmp;
--        memcpy(&tmp, fi, sizeof(tmp));
--        err = ((struct fuse_operations_compat22 *) &fs->op)->open(path, &tmp);
--        memcpy(fi, &tmp, sizeof(tmp));
--        fi->fh = tmp.fh;
--    } else
--        err = ((struct fuse_operations_compat2 *) &fs->op)
--            ->open(path, fi->flags);
--    return err;
+-			    struct fuse_file_info *fi)
+-{
+-	int err;
+-	if (!fs->compat || fs->compat >= 25)
+-		err = fs->op.open(path, fi);
+-	else if (fs->compat == 22) {
+-		struct fuse_file_info_compat tmp;
+-		memcpy(&tmp, fi, sizeof(tmp));
+-		err = ((struct fuse_operations_compat22 *) &fs->op)->open(path,
+-									  &tmp);
+-		memcpy(fi, &tmp, sizeof(tmp));
+-		fi->fh = tmp.fh;
+-	} else
+-		err = ((struct fuse_operations_compat2 *) &fs->op)
+-			->open(path, fi->flags);
+-	return err;
 -}
 -
 -static int fuse_compat_release(struct fuse_fs *fs, const char *path,
--                               struct fuse_file_info *fi)
+-			       struct fuse_file_info *fi)
 -{
--    if (!fs->compat || fs->compat >= 22)
--        return fs->op.release(path, fi);
--    else
--        return ((struct fuse_operations_compat2 *) &fs->op)
--            ->release(path, fi->flags);
+-	if (!fs->compat || fs->compat >= 22)
+-		return fs->op.release(path, fi);
+-	else
+-		return ((struct fuse_operations_compat2 *) &fs->op)
+-			->release(path, fi->flags);
 -}
 -
 -static int fuse_compat_opendir(struct fuse_fs *fs, const char *path,
--                               struct fuse_file_info *fi)
--{
--    if (!fs->compat || fs->compat >= 25)
--        return fs->op.opendir(path, fi);
--    else {
--        int err;
--        struct fuse_file_info_compat tmp;
--        memcpy(&tmp, fi, sizeof(tmp));
--        err = ((struct fuse_operations_compat22 *) &fs->op)
--            ->opendir(path, &tmp);
--        memcpy(fi, &tmp, sizeof(tmp));
--        fi->fh = tmp.fh;
--        return err;
--    }
+-			       struct fuse_file_info *fi)
+-{
+-	if (!fs->compat || fs->compat >= 25)
+-		return fs->op.opendir(path, fi);
+-	else {
+-		int err;
+-		struct fuse_file_info_compat tmp;
+-		memcpy(&tmp, fi, sizeof(tmp));
+-		err = ((struct fuse_operations_compat22 *) &fs->op)
+-			->opendir(path, &tmp);
+-		memcpy(fi, &tmp, sizeof(tmp));
+-		fi->fh = tmp.fh;
+-		return err;
+-	}
 -}
 -
 -static void convert_statfs_compat(struct fuse_statfs_compat1 *compatbuf,
--                                  struct statvfs *stbuf)
+-				  struct statvfs *stbuf)
 -{
--    stbuf->f_bsize   = compatbuf->block_size;
--    stbuf->f_blocks  = compatbuf->blocks;
--    stbuf->f_bfree   = compatbuf->blocks_free;
--    stbuf->f_bavail  = compatbuf->blocks_free;
--    stbuf->f_files   = compatbuf->files;
--    stbuf->f_ffree   = compatbuf->files_free;
--    stbuf->f_namemax = compatbuf->namelen;
+-	stbuf->f_bsize	 = compatbuf->block_size;
+-	stbuf->f_blocks	 = compatbuf->blocks;
+-	stbuf->f_bfree	 = compatbuf->blocks_free;
+-	stbuf->f_bavail	 = compatbuf->blocks_free;
+-	stbuf->f_files	 = compatbuf->files;
+-	stbuf->f_ffree	 = compatbuf->files_free;
+-	stbuf->f_namemax = compatbuf->namelen;
 -}
 -
 -static void convert_statfs_old(struct statfs *oldbuf, struct statvfs *stbuf)
 -{
--    stbuf->f_bsize   = oldbuf->f_bsize;
--    stbuf->f_blocks  = oldbuf->f_blocks;
--    stbuf->f_bfree   = oldbuf->f_bfree;
--    stbuf->f_bavail  = oldbuf->f_bavail;
--    stbuf->f_files   = oldbuf->f_files;
--    stbuf->f_ffree   = oldbuf->f_ffree;
--    stbuf->f_namemax = oldbuf->f_namelen;
+-	stbuf->f_bsize	 = oldbuf->f_bsize;
+-	stbuf->f_blocks	 = oldbuf->f_blocks;
+-	stbuf->f_bfree	 = oldbuf->f_bfree;
+-	stbuf->f_bavail	 = oldbuf->f_bavail;
+-	stbuf->f_files	 = oldbuf->f_files;
+-	stbuf->f_ffree	 = oldbuf->f_ffree;
+-	stbuf->f_namemax = oldbuf->f_namelen;
 -}
 -
 -static int fuse_compat_statfs(struct fuse_fs *fs, const char *path,
--                              struct statvfs *buf)
--{
--    int err;
--
--    if (!fs->compat || fs->compat >= 25) {
--        err = fs->op.statfs(fs->compat == 25 ? "/" : path, buf);
--    } else if (fs->compat > 11) {
--        struct statfs oldbuf;
--        err = ((struct fuse_operations_compat22 *) &fs->op)
--            ->statfs("/", &oldbuf);
--        if (!err)
--            convert_statfs_old(&oldbuf, buf);
--    } else {
--        struct fuse_statfs_compat1 compatbuf;
--        memset(&compatbuf, 0, sizeof(struct fuse_statfs_compat1));
--        err = ((struct fuse_operations_compat1 *) &fs->op)->statfs(&compatbuf);
--        if (!err)
--            convert_statfs_compat(&compatbuf, buf);
--    }
--    return err;
+-			      struct statvfs *buf)
+-{
+-	int err;
+-
+-	if (!fs->compat || fs->compat >= 25) {
+-		err = fs->op.statfs(fs->compat == 25 ? "/" : path, buf);
+-	} else if (fs->compat > 11) {
+-		struct statfs oldbuf;
+-		err = ((struct fuse_operations_compat22 *) &fs->op)
+-			->statfs("/", &oldbuf);
+-		if (!err)
+-			convert_statfs_old(&oldbuf, buf);
+-	} else {
+-		struct fuse_statfs_compat1 compatbuf;
+-		memset(&compatbuf, 0, sizeof(struct fuse_statfs_compat1));
+-		err = ((struct fuse_operations_compat1 *) &fs->op)
+-			->statfs(&compatbuf);
+-		if (!err)
+-			convert_statfs_compat(&compatbuf, buf);
+-	}
+-	return err;
 -}
 -
 -#else /* __FreeBSD__ */
 -
 -static inline int fuse_compat_open(struct fuse_fs *fs, char *path,
--                                   struct fuse_file_info *fi)
+-				   struct fuse_file_info *fi)
 -{
--    return fs->op.open(path, fi);
+-	return fs->op.open(path, fi);
 -}
 -
 -static inline int fuse_compat_release(struct fuse_fs *fs, const char *path,
--                                      struct fuse_file_info *fi)
+-				      struct fuse_file_info *fi)
 -{
--    return fs->op.release(path, fi);
+-	return fs->op.release(path, fi);
 -}
 -
 -static inline int fuse_compat_opendir(struct fuse_fs *fs, const char *path,
--                                      struct fuse_file_info *fi)
+-				      struct fuse_file_info *fi)
 -{
--    return fs->op.opendir(path, fi);
+-	return fs->op.opendir(path, fi);
 -}
 -
 -static inline int fuse_compat_statfs(struct fuse_fs *fs, const char *path,
--                                     struct statvfs *buf)
+-				     struct statvfs *buf)
 -{
--    return fs->op.statfs(fs->compat == 25 ? "/" : path, buf);
+-	return fs->op.statfs(fs->compat == 25 ? "/" : path, buf);
 -}
 -
 -#endif /* __FreeBSD__ */
 -
  int fuse_fs_getattr(struct fuse_fs *fs, const char *path, struct stat *buf)
  {
-     fuse_get_context()->private_data = fs->user_data;
-@@ -814,7 +691,7 @@
+ 	fuse_get_context()->private_data = fs->user_data;
+@@ -821,7 +696,7 @@
  {
-     fuse_get_context()->private_data = fs->user_data;
-     if (fs->op.release)
--        return fuse_compat_release(fs, path, fi);
-+        return fs->op.release(path, fi);
-     else
-         return 0;
+ 	fuse_get_context()->private_data = fs->user_data;
+ 	if (fs->op.release)
+-		return fuse_compat_release(fs, path, fi);
++		return fs->op.release(path, fi);
+ 	else
+ 		return 0;
  }
-@@ -824,7 +701,7 @@
+@@ -831,7 +706,7 @@
  {
-     fuse_get_context()->private_data = fs->user_data;
-     if (fs->op.opendir)
--        return fuse_compat_opendir(fs, path, fi);
-+        return fs->op.opendir(path, fi);
-     else
-         return 0;
+ 	fuse_get_context()->private_data = fs->user_data;
+ 	if (fs->op.opendir)
+-		return fuse_compat_opendir(fs, path, fi);
++		return fs->op.opendir(path, fi);
+ 	else
+ 		return 0;
  }
-@@ -834,7 +711,7 @@
+@@ -841,7 +716,7 @@
  {
-     fuse_get_context()->private_data = fs->user_data;
-     if (fs->op.open)
--        return fuse_compat_open(fs, path, fi);
-+        return fs->op.open(path, fi);
-     else
-         return 0;
+ 	fuse_get_context()->private_data = fs->user_data;
+ 	if (fs->op.open)
+-		return fuse_compat_open(fs, path, fi);
++		return fs->op.open(path, fi);
+ 	else
+ 		return 0;
  }
-@@ -893,7 +770,7 @@
+@@ -900,7 +775,7 @@
  {
-     fuse_get_context()->private_data = fs->user_data;
-     if (fs->op.statfs)
--        return fuse_compat_statfs(fs, path, buf);
-+        return fs->op.statfs(path, buf);
-     else {
-         buf->f_namemax = 255;
-         buf->f_bsize = 512;
-@@ -3037,7 +2914,6 @@
-     if (!fs)
-         goto out_free;
+ 	fuse_get_context()->private_data = fs->user_data;
+ 	if (fs->op.statfs)
+-		return fuse_compat_statfs(fs, path, buf);
++		return fs->op.statfs(path, buf);
+ 	else {
+ 		buf->f_namemax = 255;
+ 		buf->f_bsize = 512;
+@@ -3070,7 +2945,6 @@
+ 	if (!fs)
+ 		goto out_free;
  
--    fs->compat = compat;
-     f->fs = fs;
+-	fs->compat = compat;
+ 	f->fs = fs;
  
-     /* Oh f**k, this is ugly! */
-@@ -3079,11 +2955,6 @@
-     f->conf.readdir_ino = 1;
+ 	/* Oh f**k, this is ugly! */
+@@ -3114,11 +2988,6 @@
+ 	f->conf.readdir_ino = 1;
  #endif
  
--    if (compat && compat <= 25) {
--        if (fuse_sync_compat_args(args) == -1)
--            goto out_free_fs;
--    }
--
-     f->se = fuse_lowlevel_new_common(args, &llop, sizeof(llop), f);
-     if (f->se == NULL) {
-         if (f->conf.help)
-@@ -3217,19 +3088,6 @@
-     fuse_delete_context_key();
+-	if (compat && compat <= 25) {
+-		if (fuse_sync_compat_args(args) == -1)
+-			goto out_free_fs;
+-	}
+-
+ 	f->se = fuse_lowlevel_new_common(args, &llop, sizeof(llop), f);
+ 	if (f->se == NULL) {
+ 		if (f->conf.help)
+@@ -3254,19 +3123,6 @@
+ 	fuse_delete_context_key();
  }
  
 -static struct fuse *fuse_new_common_compat25(int fd, struct fuse_args *args,
--                                             const struct fuse_operations *op,
--                                             size_t op_size, int compat)
+-					     const struct fuse_operations *op,
+-					     size_t op_size, int compat)
 -{
--    struct fuse *f = NULL;
--    struct fuse_chan *ch = fuse_kern_chan_new(fd);
+-	struct fuse *f = NULL;
+-	struct fuse_chan *ch = fuse_kern_chan_new(fd);
 -
--    if (ch)
--        f = fuse_new_common(ch, args, op, op_size, NULL, compat);
+-	if (ch)
+-		f = fuse_new_common(ch, args, op, op_size, NULL, compat);
 -
--    return f;
+-	return f;
 -}
 -
  /* called with fuse_context_lock held or during initialization (before
     main() has been called) */
  void fuse_register_module(struct fuse_module *mod)
-@@ -3242,69 +3100,3 @@
-     fuse_modules = mod;
+@@ -3278,72 +3134,3 @@
+ 	mod->next = fuse_modules;
+ 	fuse_modules = mod;
  }
- 
+-
 -#ifndef __FreeBSD__
 -
 -static struct fuse *fuse_new_common_compat(int fd, const char *opts,
--                                           const struct fuse_operations *op,
--                                           size_t op_size, int compat)
+-					   const struct fuse_operations *op,
+-					   size_t op_size, int compat)
 -{
--    struct fuse *f;
--    struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
+-	struct fuse *f;
+-	struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
 -
--    if (fuse_opt_add_arg(&args, "") == -1)
--	return NULL;
--    if (opts &&
--        (fuse_opt_add_arg(&args, "-o") == -1 ||
--         fuse_opt_add_arg(&args, opts) == -1)) {
--        fuse_opt_free_args(&args);
--        return NULL;
--    }
--    f = fuse_new_common_compat25(fd, &args, op, op_size, compat);
--    fuse_opt_free_args(&args);
+-	if (fuse_opt_add_arg(&args, "") == -1)
+-		return NULL;
+-	if (opts &&
+-	    (fuse_opt_add_arg(&args, "-o") == -1 ||
+-	     fuse_opt_add_arg(&args, opts) == -1)) {
+-		fuse_opt_free_args(&args);
+-		return NULL;
+-	}
+-	f = fuse_new_common_compat25(fd, &args, op, op_size, compat);
+-	fuse_opt_free_args(&args);
 -
--    return f;
+-	return f;
 -}
 -
 -struct fuse *fuse_new_compat22(int fd, const char *opts,
--                               const struct fuse_operations_compat22 *op,
--                               size_t op_size)
+-			       const struct fuse_operations_compat22 *op,
+-			       size_t op_size)
 -{
--    return fuse_new_common_compat(fd, opts, (struct fuse_operations *) op,
--                                  op_size, 22);
+-	return fuse_new_common_compat(fd, opts, (struct fuse_operations *) op,
+-				      op_size, 22);
 -}
 -
 -struct fuse *fuse_new_compat2(int fd, const char *opts,
--                              const struct fuse_operations_compat2 *op)
+-			      const struct fuse_operations_compat2 *op)
 -{
--    return fuse_new_common_compat(fd, opts, (struct fuse_operations *) op,
--                                  sizeof(struct fuse_operations_compat2), 21);
+-	return fuse_new_common_compat(fd, opts, (struct fuse_operations *) op,
+-				      sizeof(struct fuse_operations_compat2),
+-				      21);
 -}
 -
 -struct fuse *fuse_new_compat1(int fd, int flags,
--                              const struct fuse_operations_compat1 *op)
+-			      const struct fuse_operations_compat1 *op)
 -{
--    const char *opts = NULL;
--    if (flags & FUSE_DEBUG_COMPAT1)
--        opts = "debug";
--    return fuse_new_common_compat(fd, opts, (struct fuse_operations *) op,
--                                  sizeof(struct fuse_operations_compat1), 11);
+-	const char *opts = NULL;
+-	if (flags & FUSE_DEBUG_COMPAT1)
+-		opts = "debug";
+-	return fuse_new_common_compat(fd, opts, (struct fuse_operations *) op,
+-				      sizeof(struct fuse_operations_compat1),
+-				      11);
 -}
 -
--__asm__(".symver fuse_exited,__fuse_exited@");
--__asm__(".symver fuse_process_cmd,__fuse_process_cmd@");
--__asm__(".symver fuse_read_cmd,__fuse_read_cmd@");
--__asm__(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@");
--__asm__(".symver fuse_new_compat2,fuse_new@");
--__asm__(".symver fuse_new_compat22,fuse_new@FUSE_2.2");
+-FUSE_SYMVER(".symver fuse_exited,__fuse_exited@");
+-FUSE_SYMVER(".symver fuse_process_cmd,__fuse_process_cmd@");
+-FUSE_SYMVER(".symver fuse_read_cmd,__fuse_read_cmd@");
+-FUSE_SYMVER(".symver fuse_set_getcontext_func,__fuse_set_getcontext_func@");
+-FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@");
+-FUSE_SYMVER(".symver fuse_new_compat22,fuse_new@FUSE_2.2");
 -
 -#endif /* __FreeBSD__ */
 -
 -struct fuse *fuse_new_compat25(int fd, struct fuse_args *args,
--                               const struct fuse_operations_compat25 *op,
--                               size_t op_size)
+-			       const struct fuse_operations_compat25 *op,
+-			       size_t op_size)
 -{
--    return fuse_new_common_compat25(fd, args, (struct fuse_operations *) op,
--                                    op_size, 25);
+-	return fuse_new_common_compat25(fd, args, (struct fuse_operations *) op,
+-					op_size, 25);
 -}
 -
--__asm__(".symver fuse_new_compat25,fuse_new@FUSE_2.5");
-Index: fuse-2.7.1/lib/fuse_lowlevel.c
-===================================================================
---- fuse-2.7.1.orig/lib/fuse_lowlevel.c	2007-10-20 17:13:51.425739218 +0200
-+++ fuse-2.7.1/lib/fuse_lowlevel.c	2007-10-20 17:22:46.396225455 +0200
+-FUSE_SYMVER(".symver fuse_new_compat25,fuse_new@FUSE_2.5");
+diff -Nru fuse-2.7.3.orig/lib/fuse_lowlevel.c fuse-2.7.3/lib/fuse_lowlevel.c
+--- fuse-2.7.3.orig/lib/fuse_lowlevel.c	2008-02-19 14:51:26.000000000 -0500
++++ fuse-2.7.3/lib/fuse_lowlevel.c	2008-03-17 15:07:40.000000000 -0400
 @@ -11,8 +11,6 @@
  #include "fuse_opt.h"
  #include "fuse_i.h"
@@ -316,160 +317,160 @@ Index: fuse-2.7.1/lib/fuse_lowlevel.c
  
  #include <stdio.h>
  #include <stdlib.h>
-@@ -1310,129 +1308,3 @@
-     return fuse_lowlevel_new_common(args, op, op_size, userdata);
+@@ -1319,130 +1317,3 @@
+ {
+ 	return fuse_lowlevel_new_common(args, op, op_size, userdata);
  }
- 
+-
 -
 -#ifndef __FreeBSD__
 -
 -static void fill_open_compat(struct fuse_open_out *arg,
--                      const struct fuse_file_info_compat *f)
+-			     const struct fuse_file_info_compat *f)
 -{
--    arg->fh = f->fh;
--    if (f->direct_io)
--        arg->open_flags |= FOPEN_DIRECT_IO;
--    if (f->keep_cache)
--        arg->open_flags |= FOPEN_KEEP_CACHE;
+-	arg->fh = f->fh;
+-	if (f->direct_io)
+-		arg->open_flags |= FOPEN_DIRECT_IO;
+-	if (f->keep_cache)
+-		arg->open_flags |= FOPEN_KEEP_CACHE;
 -}
 -
 -static void convert_statfs_compat(const struct statfs *compatbuf,
--                                  struct statvfs *buf)
+-				  struct statvfs *buf)
 -{
--    buf->f_bsize	= compatbuf->f_bsize;
--    buf->f_blocks	= compatbuf->f_blocks;
--    buf->f_bfree	= compatbuf->f_bfree;
--    buf->f_bavail	= compatbuf->f_bavail;
--    buf->f_files	= compatbuf->f_files;
--    buf->f_ffree	= compatbuf->f_ffree;
--    buf->f_namemax	= compatbuf->f_namelen;
+-	buf->f_bsize	= compatbuf->f_bsize;
+-	buf->f_blocks	= compatbuf->f_blocks;
+-	buf->f_bfree	= compatbuf->f_bfree;
+-	buf->f_bavail	= compatbuf->f_bavail;
+-	buf->f_files	= compatbuf->f_files;
+-	buf->f_ffree	= compatbuf->f_ffree;
+-	buf->f_namemax	= compatbuf->f_namelen;
 -}
 -
 -int fuse_reply_open_compat(fuse_req_t req,
--                           const struct fuse_file_info_compat *f)
+-			   const struct fuse_file_info_compat *f)
 -{
--    struct fuse_open_out arg;
+-	struct fuse_open_out arg;
 -
--    memset(&arg, 0, sizeof(arg));
--    fill_open_compat(&arg, f);
--    return send_reply_ok(req, &arg, sizeof(arg));
+-	memset(&arg, 0, sizeof(arg));
+-	fill_open_compat(&arg, f);
+-	return send_reply_ok(req, &arg, sizeof(arg));
 -}
 -
 -int fuse_reply_statfs_compat(fuse_req_t req, const struct statfs *stbuf)
 -{
--    struct statvfs newbuf;
+-	struct statvfs newbuf;
 -
--    memset(&newbuf, 0, sizeof(newbuf));
--    convert_statfs_compat(stbuf, &newbuf);
+-	memset(&newbuf, 0, sizeof(newbuf));
+-	convert_statfs_compat(stbuf, &newbuf);
 -
--    return fuse_reply_statfs(req, &newbuf);
+-	return fuse_reply_statfs(req, &newbuf);
 -}
 -
 -struct fuse_session *fuse_lowlevel_new_compat(const char *opts,
--                            const struct fuse_lowlevel_ops_compat *op,
--                            size_t op_size, void *userdata)
+-				const struct fuse_lowlevel_ops_compat *op,
+-				size_t op_size, void *userdata)
 -{
--    struct fuse_session *se;
--    struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
+-	struct fuse_session *se;
+-	struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
 -
--    if (opts &&
--        (fuse_opt_add_arg(&args, "") == -1 ||
--         fuse_opt_add_arg(&args, "-o") == -1 ||
--         fuse_opt_add_arg(&args, opts) == -1)) {
--        fuse_opt_free_args(&args);
--        return NULL;
--    }
--    se = fuse_lowlevel_new(&args, (const struct fuse_lowlevel_ops *) op,
--                           op_size, userdata);
--    fuse_opt_free_args(&args);
+-	if (opts &&
+-	    (fuse_opt_add_arg(&args, "") == -1 ||
+-	     fuse_opt_add_arg(&args, "-o") == -1 ||
+-	     fuse_opt_add_arg(&args, opts) == -1)) {
+-		fuse_opt_free_args(&args);
+-		return NULL;
+-	}
+-	se = fuse_lowlevel_new(&args, (const struct fuse_lowlevel_ops *) op,
+-			       op_size, userdata);
+-	fuse_opt_free_args(&args);
 -
--    return se;
+-	return se;
 -}
 -
 -struct fuse_ll_compat_conf {
--    unsigned max_read;
--    int set_max_read;
+-	unsigned max_read;
+-	int set_max_read;
 -};
 -
 -static const struct fuse_opt fuse_ll_opts_compat[] = {
--    { "max_read=", offsetof(struct fuse_ll_compat_conf, set_max_read), 1 },
--    { "max_read=%u", offsetof(struct fuse_ll_compat_conf, max_read), 0 },
--    FUSE_OPT_KEY("max_read=", FUSE_OPT_KEY_KEEP),
--    FUSE_OPT_END
+-	{ "max_read=", offsetof(struct fuse_ll_compat_conf, set_max_read), 1 },
+-	{ "max_read=%u", offsetof(struct fuse_ll_compat_conf, max_read), 0 },
+-	FUSE_OPT_KEY("max_read=", FUSE_OPT_KEY_KEEP),
+-	FUSE_OPT_END
 -};
 -
 -int fuse_sync_compat_args(struct fuse_args *args)
 -{
--    struct fuse_ll_compat_conf conf;
+-	struct fuse_ll_compat_conf conf;
 -
--    memset(&conf, 0, sizeof(conf));
--    if (fuse_opt_parse(args, &conf, fuse_ll_opts_compat, NULL) == -1)
--        return -1;
+-	memset(&conf, 0, sizeof(conf));
+-	if (fuse_opt_parse(args, &conf, fuse_ll_opts_compat, NULL) == -1)
+-		return -1;
 -
--    if (fuse_opt_insert_arg(args, 1, "-osync_read"))
--        return -1;
+-	if (fuse_opt_insert_arg(args, 1, "-osync_read"))
+-		return -1;
 -
--    if (conf.set_max_read) {
--        char tmpbuf[64];
+-	if (conf.set_max_read) {
+-		char tmpbuf[64];
 -
--        sprintf(tmpbuf, "-omax_readahead=%u", conf.max_read);
--        if (fuse_opt_insert_arg(args, 1, tmpbuf) == -1)
--            return -1;
--    }
--    return 0;
+-		sprintf(tmpbuf, "-omax_readahead=%u", conf.max_read);
+-		if (fuse_opt_insert_arg(args, 1, tmpbuf) == -1)
+-			return -1;
+-	}
+-	return 0;
 -}
 -
--__asm__(".symver fuse_reply_statfs_compat,fuse_reply_statfs@FUSE_2.4");
--__asm__(".symver fuse_reply_open_compat,fuse_reply_open@FUSE_2.4");
--__asm__(".symver fuse_lowlevel_new_compat,fuse_lowlevel_new@FUSE_2.4");
+-FUSE_SYMVER(".symver fuse_reply_statfs_compat,fuse_reply_statfs@FUSE_2.4");
+-FUSE_SYMVER(".symver fuse_reply_open_compat,fuse_reply_open@FUSE_2.4");
+-FUSE_SYMVER(".symver fuse_lowlevel_new_compat,fuse_lowlevel_new@FUSE_2.4");
 -
 -#else /* __FreeBSD__ */
 -
 -int fuse_sync_compat_args(struct fuse_args *args)
 -{
--    (void) args;
--    return 0;
+-	(void) args;
+-	return 0;
 -}
 -
 -#endif /* __FreeBSD__ */
 -
 -struct fuse_session *fuse_lowlevel_new_compat25(struct fuse_args *args,
--                        const struct fuse_lowlevel_ops_compat25 *op,
--                        size_t op_size, void *userdata)
+-				const struct fuse_lowlevel_ops_compat25 *op,
+-				size_t op_size, void *userdata)
 -{
--    if (fuse_sync_compat_args(args) == -1)
--        return NULL;
+-	if (fuse_sync_compat_args(args) == -1)
+-		return NULL;
 -
--    return fuse_lowlevel_new_common(args,
--                                    (const struct fuse_lowlevel_ops *) op,
--                                    op_size, userdata);
+-	return fuse_lowlevel_new_common(args,
+-					(const struct fuse_lowlevel_ops *) op,
+-					op_size, userdata);
 -}
 -
--__asm__(".symver fuse_lowlevel_new_compat25,fuse_lowlevel_new@FUSE_2.5");
-Index: fuse-2.7.1/lib/helper.c
-===================================================================
---- fuse-2.7.1.orig/lib/helper.c	2007-10-20 17:13:51.433739673 +0200
-+++ fuse-2.7.1/lib/helper.c	2007-10-20 17:21:32.508014797 +0200
-@@ -10,7 +10,6 @@
- #include "fuse_i.h"
+-FUSE_SYMVER(".symver fuse_lowlevel_new_compat25,fuse_lowlevel_new@FUSE_2.5");
+diff -Nru fuse-2.7.3.orig/lib/helper.c fuse-2.7.3/lib/helper.c
+--- fuse-2.7.3.orig/lib/helper.c	2008-02-19 14:51:27.000000000 -0500
++++ fuse-2.7.3/lib/helper.c	2008-03-17 15:10:18.000000000 -0400
+@@ -11,7 +11,6 @@
+ #include "fuse_misc.h"
  #include "fuse_opt.h"
  #include "fuse_lowlevel.h"
 -#include "fuse_common_compat.h"
  
  #include <stdio.h>
  #include <stdlib.h>
-@@ -202,7 +201,7 @@
-             close(fd);
-     } while (fd >= 0 && fd <= 2);
+@@ -206,7 +205,7 @@
+ 			close(fd);
+ 	} while (fd >= 0 && fd <= 2);
  
--    fd = fuse_mount_compat25(mountpoint, args);
-+    fd = fuse_kern_mount(mountpoint, args);
-     if (fd == -1)
-         return NULL;
+-	fd = fuse_mount_compat25(mountpoint, args);
++	fd = fuse_kern_mount(mountpoint, args);
+ 	if (fd == -1)
+ 		return NULL;
  
-@@ -349,97 +348,3 @@
+@@ -353,100 +352,3 @@
  {
-     return FUSE_VERSION;
+ 	return FUSE_VERSION;
  }
 -
 -#include "fuse_compat.h"
@@ -477,133 +478,136 @@ Index: fuse-2.7.1/lib/helper.c
 -#ifndef __FreeBSD__
 -
 -struct fuse *fuse_setup_compat22(int argc, char *argv[],
--                                 const struct fuse_operations_compat22 *op,
--                                 size_t op_size, char **mountpoint,
--                                 int *multithreaded, int *fd)
+-				 const struct fuse_operations_compat22 *op,
+-				 size_t op_size, char **mountpoint,
+-				 int *multithreaded, int *fd)
 -{
--    return fuse_setup_common(argc, argv, (struct fuse_operations *) op,
--                             op_size, mountpoint, multithreaded, fd, NULL, 22);
+-	return fuse_setup_common(argc, argv, (struct fuse_operations *) op,
+-				 op_size, mountpoint, multithreaded, fd, NULL,
+-				 22);
 -}
 -
 -struct fuse *fuse_setup_compat2(int argc, char *argv[],
--                                 const struct fuse_operations_compat2 *op,
--                                 char **mountpoint, int *multithreaded,
--                                 int *fd)
+-				const struct fuse_operations_compat2 *op,
+-				char **mountpoint, int *multithreaded,
+-				int *fd)
 -{
--    return fuse_setup_common(argc, argv, (struct fuse_operations *) op,
--                             sizeof(struct fuse_operations_compat2),
--                             mountpoint, multithreaded, fd, NULL, 21);
+-	return fuse_setup_common(argc, argv, (struct fuse_operations *) op,
+-				 sizeof(struct fuse_operations_compat2),
+-				 mountpoint, multithreaded, fd, NULL, 21);
 -}
 -
 -int fuse_main_real_compat22(int argc, char *argv[],
--                            const struct fuse_operations_compat22 *op,
--                            size_t op_size)
+-			    const struct fuse_operations_compat22 *op,
+-			    size_t op_size)
 -{
--    return fuse_main_common(argc, argv, (struct fuse_operations *) op, op_size,
--                            NULL, 22);
+-	return fuse_main_common(argc, argv, (struct fuse_operations *) op,
+-				op_size, NULL, 22);
 -}
 -
 -void fuse_main_compat1(int argc, char *argv[],
--                      const struct fuse_operations_compat1 *op)
+-		       const struct fuse_operations_compat1 *op)
 -{
--    fuse_main_common(argc, argv, (struct fuse_operations *) op,
--                     sizeof(struct fuse_operations_compat1), NULL, 11);
+-	fuse_main_common(argc, argv, (struct fuse_operations *) op,
+-			 sizeof(struct fuse_operations_compat1), NULL, 11);
 -}
 -
 -int fuse_main_compat2(int argc, char *argv[],
--                      const struct fuse_operations_compat2 *op)
+-		      const struct fuse_operations_compat2 *op)
 -{
--    return fuse_main_common(argc, argv, (struct fuse_operations *) op,
--                            sizeof(struct fuse_operations_compat2), NULL, 21);
+-	return fuse_main_common(argc, argv, (struct fuse_operations *) op,
+-				sizeof(struct fuse_operations_compat2), NULL,
+-				21);
 -}
 -
 -int fuse_mount_compat1(const char *mountpoint, const char *args[])
 -{
--    /* just ignore mount args for now */
--    (void) args;
--    return fuse_mount_compat22(mountpoint, NULL);
+-	/* just ignore mount args for now */
+-	(void) args;
+-	return fuse_mount_compat22(mountpoint, NULL);
 -}
 -
--__asm__(".symver fuse_setup_compat2,__fuse_setup@");
--__asm__(".symver fuse_setup_compat22,fuse_setup@FUSE_2.2");
--__asm__(".symver fuse_teardown,__fuse_teardown@");
--__asm__(".symver fuse_main_compat2,fuse_main@");
--__asm__(".symver fuse_main_real_compat22,fuse_main_real@FUSE_2.2");
+-FUSE_SYMVER(".symver fuse_setup_compat2,__fuse_setup@");
+-FUSE_SYMVER(".symver fuse_setup_compat22,fuse_setup@FUSE_2.2");
+-FUSE_SYMVER(".symver fuse_teardown,__fuse_teardown@");
+-FUSE_SYMVER(".symver fuse_main_compat2,fuse_main@");
+-FUSE_SYMVER(".symver fuse_main_real_compat22,fuse_main_real@FUSE_2.2");
 -
 -#endif /* __FreeBSD__ */
 -
 -
 -struct fuse *fuse_setup_compat25(int argc, char *argv[],
--                                 const struct fuse_operations_compat25 *op,
--                                 size_t op_size, char **mountpoint,
--                                 int *multithreaded, int *fd)
+-				 const struct fuse_operations_compat25 *op,
+-				 size_t op_size, char **mountpoint,
+-				 int *multithreaded, int *fd)
 -{
--    return fuse_setup_common(argc, argv, (struct fuse_operations *) op,
--                             op_size, mountpoint, multithreaded, fd, NULL, 25);
+-	return fuse_setup_common(argc, argv, (struct fuse_operations *) op,
+-				 op_size, mountpoint, multithreaded, fd, NULL,
+-				 25);
 -}
 -
 -int fuse_main_real_compat25(int argc, char *argv[],
--                            const struct fuse_operations_compat25 *op,
--                            size_t op_size)
+-			    const struct fuse_operations_compat25 *op,
+-			    size_t op_size)
 -{
--    return fuse_main_common(argc, argv, (struct fuse_operations *) op, op_size,
--                            NULL, 25);
+-	return fuse_main_common(argc, argv, (struct fuse_operations *) op,
+-				op_size, NULL, 25);
 -}
 -
 -void fuse_teardown_compat22(struct fuse *fuse, int fd, char *mountpoint)
 -{
--    (void) fd;
--    fuse_teardown_common(fuse, mountpoint);
+-	(void) fd;
+-	fuse_teardown_common(fuse, mountpoint);
 -}
 -
 -int fuse_mount_compat25(const char *mountpoint, struct fuse_args *args)
 -{
--    return fuse_kern_mount(mountpoint, args);
+-	return fuse_kern_mount(mountpoint, args);
 -}
 -
--__asm__(".symver fuse_setup_compat25,fuse_setup@FUSE_2.5");
--__asm__(".symver fuse_teardown_compat22,fuse_teardown@FUSE_2.2");
--__asm__(".symver fuse_main_real_compat25,fuse_main_real@FUSE_2.5");
--__asm__(".symver fuse_mount_compat25,fuse_mount@FUSE_2.5");
-Index: fuse-2.7.1/lib/mount.c
-===================================================================
---- fuse-2.7.1.orig/lib/mount.c	2007-10-20 17:13:51.441740129 +0200
-+++ fuse-2.7.1/lib/mount.c	2007-10-20 17:22:07.209992349 +0200
-@@ -9,7 +9,6 @@
- #include "config.h"
+-FUSE_SYMVER(".symver fuse_setup_compat25,fuse_setup@FUSE_2.5");
+-FUSE_SYMVER(".symver fuse_teardown_compat22,fuse_teardown@FUSE_2.2");
+-FUSE_SYMVER(".symver fuse_main_real_compat25,fuse_main_real@FUSE_2.5");
+-FUSE_SYMVER(".symver fuse_mount_compat25,fuse_mount@FUSE_2.5");
+diff -Nru fuse-2.7.3.orig/lib/mount.c fuse-2.7.3/lib/mount.c
+--- fuse-2.7.3.orig/lib/mount.c	2008-02-19 14:51:27.000000000 -0500
++++ fuse-2.7.3/lib/mount.c	2008-03-17 15:11:02.000000000 -0400
+@@ -10,7 +10,6 @@
  #include "fuse_i.h"
+ #include "fuse_misc.h"
  #include "fuse_opt.h"
 -#include "fuse_common_compat.h"
  #include "mount_util.h"
  
  #include <stdio.h>
-@@ -308,11 +307,6 @@
-     waitpid(pid, NULL, 0);
+@@ -312,11 +311,6 @@
+ 	waitpid(pid, NULL, 0);
  }
  
 -void fuse_unmount_compat22(const char *mountpoint)
 -{
--    fuse_kern_unmount(mountpoint, -1);
+-	fuse_kern_unmount(mountpoint, -1);
 -}
 -
  static int fuse_mount_fusermount(const char *mountpoint, const char *opts,
-                                  int quiet)
+ 				 int quiet)
  {
-@@ -376,11 +370,6 @@
-     return rv;
+@@ -380,11 +374,6 @@
+ 	return rv;
  }
  
 -int fuse_mount_compat22(const char *mountpoint, const char *opts)
 -{
--    return fuse_mount_fusermount(mountpoint, opts, 0);
+-	return fuse_mount_fusermount(mountpoint, opts, 0);
 -}
 -
  static int fuse_mount_sys(const char *mnt, struct mount_opts *mo,
-                           const char *mnt_opts)
+ 			  const char *mnt_opts)
  {
-@@ -579,5 +568,3 @@
-     return res;
+@@ -587,6 +576,3 @@
+ 	free(mo.mtab_opts);
+ 	return res;
  }
- 
--__asm__(".symver fuse_mount_compat22,fuse_mount@FUSE_2.2");
--__asm__(".symver fuse_unmount_compat22,fuse_unmount@FUSE_2.2");
+-
+-FUSE_SYMVER(".symver fuse_mount_compat22,fuse_mount@FUSE_2.2");
+-FUSE_SYMVER(".symver fuse_unmount_compat22,fuse_unmount@FUSE_2.2");
diff --git a/package/fuse/patches/300-2.6.24_fixes.patch b/package/fuse/patches/300-2.6.24_fixes.patch
deleted file mode 100644
index e8f761e37191355e107a6a79ecbb10333354c604..0000000000000000000000000000000000000000
--- a/package/fuse/patches/300-2.6.24_fixes.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-# HG changeset patch
-# User mszeredi
-# Date 1197485983 0
-# Node ID 5b8914cfe0fb7ccfb6e7f61512374d8541f2a193
-# Parent 81a85541800582144b7381e0b022c10245facc61
-Fix kernel module compile for 2.6.24
-
---- a/kernel/dir.c	Wed Dec 12 14:33:17 2007 +0000
-+++ b/kernel/dir.c	Wed Dec 12 18:59:43 2007 +0000
-@@ -191,7 +191,7 @@ static int invalid_nodeid(u64 nodeid)
- 	return !nodeid || nodeid == FUSE_ROOT_ID;
- }
- 
--static struct dentry_operations fuse_dentry_operations = {
-+struct dentry_operations fuse_dentry_operations = {
- 	.d_revalidate	= fuse_dentry_revalidate,
- };
- 
-@@ -378,6 +378,7 @@ static int fuse_create_open(struct inode
- 	}
- 	fuse_put_request(fc, forget_req);
- 	d_instantiate(entry, inode);
-+	fuse_invalidate_attr(dir);
- 	fuse_change_timeout(entry, &outentry);
- 	file = lookup_instantiate_filp(nd, entry, generic_file_open);
- 	if (IS_ERR(file)) {
-@@ -619,6 +620,9 @@ static int fuse_rename(struct inode *old
- 	err = req->out.h.error;
- 	fuse_put_request(fc, req);
- 	if (!err) {
-+		/* ctime changes */
-+		fuse_invalidate_attr(oldent->d_inode);
-+
- 		fuse_invalidate_attr(olddir);
- 		if (olddir != newdir)
- 			fuse_invalidate_attr(newdir);
---- a/kernel/fuse_i.h	Wed Dec 12 14:33:17 2007 +0000
-+++ b/kernel/fuse_i.h	Wed Dec 12 18:59:43 2007 +0000
-@@ -47,6 +47,9 @@
- #endif
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
- #  define KERNEL_2_6_23_PLUS
-+#endif
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
-+#  define KERNEL_2_6_24_PLUS
- #endif
- 
- #if defined(__arm__) && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-@@ -647,3 +650,5 @@ int fuse_valid_type(int m);
-  * Is task allowed to perform filesystem operation?
-  */
- int fuse_allow_task(struct fuse_conn *fc, struct task_struct *task);
-+
-+extern struct dentry_operations fuse_dentry_operations;
---- a/kernel/inode.c	Wed Dec 12 14:33:17 2007 +0000
-+++ b/kernel/inode.c	Wed Dec 12 18:59:43 2007 +0000
-@@ -520,21 +520,26 @@ static struct inode *get_root_inode(stru
- #ifdef HAVE_EXPORTFS_H
- #include <linux/exportfs.h>
- #endif
--static struct dentry *fuse_get_dentry(struct super_block *sb, void *vobjp)
-+
-+struct fuse_inode_handle
- {
--	__u32 *objp = vobjp;
--	unsigned long nodeid = objp[0];
--	__u32 generation = objp[1];
-+	u64 nodeid;
-+	u32 generation;
-+};
-+
-+static struct dentry *fuse_get_dentry(struct super_block *sb,
-+				      struct fuse_inode_handle *handle)
-+{
- 	struct inode *inode;
- 	struct dentry *entry;
- 
--	if (nodeid == 0)
-+	if (handle->nodeid == 0)
- 		return ERR_PTR(-ESTALE);
- 
--	inode = ilookup5(sb, nodeid, fuse_inode_eq, &nodeid);
-+	inode = ilookup5(sb, handle->nodeid, fuse_inode_eq, &handle->nodeid);
- 	if (!inode)
- 		return ERR_PTR(-ESTALE);
--	if (inode->i_generation != generation) {
-+	if (inode->i_generation != handle->generation) {
- 		iput(inode);
- 		return ERR_PTR(-ESTALE);
- 	}
-@@ -544,42 +549,130 @@ static struct dentry *fuse_get_dentry(st
- 		iput(inode);
- 		return ERR_PTR(-ENOMEM);
- 	}
-+	entry->d_op = &fuse_dentry_operations;
- 
- 	return entry;
- }
- 
--static int fuse_encode_fh(struct dentry *dentry, __u32 *fh, int *max_len,
--			  int connectable)
-+static int fuse_encode_fh(struct dentry *dentry, u32 *fh, int *max_len,
-+			   int connectable)
- {
- 	struct inode *inode = dentry->d_inode;
- 	int len = *max_len;
- 	int type = 1;
-+	u64 nodeid;
-+	u32 generation;
- 
--	if (len < 2 || (connectable && len < 4))
--		return 255;
-+	if (len < 3 || (connectable && len < 6))
-+		return  255;
- 
--	len = 2;
--	fh[0] = get_fuse_inode(inode)->nodeid;
--	fh[1] = inode->i_generation;
-+	nodeid = get_fuse_inode(inode)->nodeid;
-+	generation = inode->i_generation;
-+
-+	len = 3;
-+	fh[0] = (u32)(nodeid >> 32);
-+	fh[1] = (u32)(nodeid & 0xffffffff);
-+	fh[2] = generation;
-+
- 	if (connectable && !S_ISDIR(inode->i_mode)) {
- 		struct inode *parent;
- 
- 		spin_lock(&dentry->d_lock);
- 		parent = dentry->d_parent->d_inode;
--		fh[2] = get_fuse_inode(parent)->nodeid;
--		fh[3] = parent->i_generation;
-+		nodeid = get_fuse_inode(parent)->nodeid;
-+		generation = parent->i_generation;
-+
-+		fh[3] = (u32)(nodeid >> 32);
-+		fh[4] = (u32)(nodeid & 0xffffffff);
-+		fh[5] = generation;
- 		spin_unlock(&dentry->d_lock);
--		len = 4;
-+
-+		len = 6;
- 		type = 2;
- 	}
-+
- 	*max_len = len;
- 	return type;
- }
- 
-+#ifdef KERNEL_2_6_24_PLUS
-+static struct dentry *fuse_fh_to_dentry(struct super_block *sb,
-+		struct fid *fid, int fh_len, int fh_type)
-+{
-+	struct fuse_inode_handle handle;
-+
-+	if (fh_len < 3 || fh_type > 2)
-+		return NULL;
-+
-+	handle.nodeid = (u64) fid->raw[0] << 32;
-+	handle.nodeid |= (u64) fid->raw[1];
-+	handle.generation = fid->raw[2];
-+	return fuse_get_dentry(sb, &handle);
-+}
-+
-+static struct dentry *fuse_fh_to_parent(struct super_block *sb,
-+		struct fid *fid, int fh_len, int fh_type)
-+{
-+	struct fuse_inode_handle parent;
-+
-+	if (fh_type != 2 || fh_len < 6)
-+		return NULL;
-+
-+	parent.nodeid = (u64) fid->raw[3] << 32;
-+	parent.nodeid |= (u64) fid->raw[4];
-+	parent.generation = fid->raw[5];
-+	return fuse_get_dentry(sb, &parent);
-+}
-+
-+
-+static const struct export_operations fuse_export_operations = {
-+	.fh_to_dentry	= fuse_fh_to_dentry,
-+	.fh_to_parent	= fuse_fh_to_parent,
-+	.encode_fh	= fuse_encode_fh,
-+};
-+#else
-+static struct dentry *fuse_get_dentry_old(struct super_block *sb, void *objp)
-+{
-+	return fuse_get_dentry(sb, objp);
-+}
-+
-+static struct dentry *fuse_decode_fh(struct super_block *sb, u32 *fh,
-+			int fh_len, int fileid_type,
-+			int (*acceptable)(void *context, struct dentry *de),
-+			void *context)
-+{
-+	struct fuse_inode_handle handle;
-+	struct fuse_inode_handle parent;
-+
-+	if (fh_len < 3 || fileid_type > 2)
-+		return NULL;
-+
-+	if (fileid_type == 2) {
-+		if (fh_len < 6)
-+			return NULL;
-+
-+		parent.nodeid = (u64) fh[3] << 32;
-+		parent.nodeid |= (u64) fh[4];
-+		parent.generation = fh[5];
-+	} else {
-+		parent.nodeid = 0;
-+		parent.generation = 0;
-+	}
-+
-+	handle.nodeid = (u64) fh[0] << 32;
-+	handle.nodeid |= (u64) fh[1];
-+	handle.generation = fh[2];
-+
-+	return ret = fuse_export_operations.
-+		find_exported_dentry(sb, &handle, &parent, acceptable, context);
-+}
-+
- static struct export_operations fuse_export_operations = {
--	.get_dentry	= fuse_get_dentry,
-+	.get_dentry	= fuse_get_dentry_old,
- 	.encode_fh      = fuse_encode_fh,
-+	.decode_fh	= fuse_decode_fh,
- };
-+#endif
- #endif
- 
- static struct super_operations fuse_super_operations = {
-@@ -845,8 +938,12 @@ static decl_subsys(fuse, NULL, NULL);
- static decl_subsys(fuse, NULL, NULL);
- static decl_subsys(connections, NULL, NULL);
- 
-+#ifdef KERNEL_2_6_24_PLUS
-+static void fuse_inode_init_once(struct kmem_cache *cachep, void *foo)
-+#else
- static void fuse_inode_init_once(void *foo, struct kmem_cache *cachep,
- 				 unsigned long flags)
-+#endif
- {
- 	struct inode * inode = foo;
- 
-