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;
 };
 
+#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,3 +25,4 @@
 int fuse_mount_compat1(const char *mountpoint, const char *args[]);
 
 void fuse_unmount_compat22(const char *mountpoint);
+#endif
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"
 #include "fuse_misc.h"
-#include "fuse_common_compat.h"
-#include "fuse_compat.h"
 
 #include <stdio.h>
 #include <string.h>
@@ -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;
-}
-
-static int fuse_compat_release(struct fuse_fs *fs, const char *path,
-			       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);
-}
-
-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;
-	}
-}
-
-static void convert_statfs_compat(struct fuse_statfs_compat1 *compatbuf,
-				  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;
-}
-
-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;
-}
-
-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;
-}
-
-#else /* __FreeBSD__ */
-
-static inline int fuse_compat_open(struct fuse_fs *fs, char *path,
-				   struct fuse_file_info *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)
-{
-	return fs->op.release(path, fi);
-}
-
-static inline int fuse_compat_opendir(struct fuse_fs *fs, const char *path,
-				      struct fuse_file_info *fi)
-{
-	return fs->op.opendir(path, fi);
-}
-
-static inline int fuse_compat_statfs(struct fuse_fs *fs, const char *path,
-				     struct statvfs *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;
@@ -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;
 }
@@ -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;
 }
@@ -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;
 }
@@ -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;
@@ -3070,7 +2945,6 @@
 	if (!fs)
 		goto out_free;
 
-	fs->compat = compat;
 	f->fs = fs;
 
 	/* 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)
@@ -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)
-{
-	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);
-
-	return f;
-}
-
 /* called with fuse_context_lock held or during initialization (before
    main() has been called) */
 void fuse_register_module(struct fuse_module *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)
-{
-	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);
-
-	return f;
-}
-
-struct fuse *fuse_new_compat22(int fd, const char *opts,
-			       const struct fuse_operations_compat22 *op,
-			       size_t op_size)
-{
-	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)
-{
-	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 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);
-}
-
-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)
-{
-	return fuse_new_common_compat25(fd, args, (struct fuse_operations *) op,
-					op_size, 25);
-}
-
-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"
 #include "fuse_misc.h"
-#include "fuse_common_compat.h"
-#include "fuse_lowlevel_compat.h"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -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)
-{
-	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)
-{
-	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)
-{
-	struct fuse_open_out 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;
-
-	memset(&newbuf, 0, sizeof(newbuf));
-	convert_statfs_compat(stbuf, &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)
-{
-	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);
-
-	return se;
-}
-
-struct fuse_ll_compat_conf {
-	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
-};
-
-int fuse_sync_compat_args(struct fuse_args *args)
-{
-	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;
-
-	if (fuse_opt_insert_arg(args, 1, "-osync_read"))
-		return -1;
-
-	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;
-}
-
-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;
-}
-
-#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)
-{
-	if (fuse_sync_compat_args(args) == -1)
-		return NULL;
-
-	return fuse_lowlevel_new_common(args,
-					(const struct fuse_lowlevel_ops *) op,
-					op_size, userdata);
-}
-
-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>
@@ -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;
 
@@ -353,100 +352,3 @@
 {
 	return FUSE_VERSION;
 }
-
-#include "fuse_compat.h"
-
-#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)
-{
-	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)
-{
-	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)
-{
-	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)
-{
-	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)
-{
-	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);
-}
-
-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)
-{
-	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)
-{
-	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);
-}
-
-int fuse_mount_compat25(const char *mountpoint, struct fuse_args *args)
-{
-	return fuse_kern_mount(mountpoint, args);
-}
-
-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>
@@ -312,11 +311,6 @@
 	waitpid(pid, NULL, 0);
 }
 
-void fuse_unmount_compat22(const char *mountpoint)
-{
-	fuse_kern_unmount(mountpoint, -1);
-}
-
 static int fuse_mount_fusermount(const char *mountpoint, const char *opts,
 				 int quiet)
 {
@@ -380,11 +374,6 @@
 	return rv;
 }
 
-int fuse_mount_compat22(const char *mountpoint, const char *opts)
-{
-	return fuse_mount_fusermount(mountpoint, opts, 0);
-}
-
 static int fuse_mount_sys(const char *mnt, struct mount_opts *mo,
 			  const char *mnt_opts)
 {
@@ -587,6 +576,3 @@
 	free(mo.mtab_opts);
 	return res;
 }
-
-FUSE_SYMVER(".symver fuse_mount_compat22,fuse_mount@FUSE_2.2");
-FUSE_SYMVER(".symver fuse_unmount_compat22,fuse_unmount@FUSE_2.2");
