aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/fusefs-kmod/Makefile2
-rw-r--r--sysutils/fusefs-kmod/files/patch-fuse_module_fmaster.c29
-rw-r--r--sysutils/fusefs-kmod/files/patch-fuse_module_fuse.c321
-rw-r--r--sysutils/fusefs-kmod/files/patch-fuse_module_fuse.h112
-rw-r--r--sysutils/fusefs-kmod/pkg-message2
5 files changed, 464 insertions, 2 deletions
diff --git a/sysutils/fusefs-kmod/Makefile b/sysutils/fusefs-kmod/Makefile
index 5cfc0c987dee..913dc10aa819 100644
--- a/sysutils/fusefs-kmod/Makefile
+++ b/sysutils/fusefs-kmod/Makefile
@@ -7,7 +7,7 @@
PORTNAME= fusefs
PORTVERSION= 0.3.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= sysutils
MASTER_SITES= http://fuse4bsd.creo.hu/downloads/ \
http://am-productions.biz/docs/
diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module_fmaster.c b/sysutils/fusefs-kmod/files/patch-fuse_module_fmaster.c
new file mode 100644
index 000000000000..a9a8f9fff734
--- /dev/null
+++ b/sysutils/fusefs-kmod/files/patch-fuse_module_fmaster.c
@@ -0,0 +1,29 @@
+--- fuse_module/fmaster.c Mon Jun 19 22:10:26 2006 +0200
++++ fuse_module/fmaster.c Mon Jun 19 22:23:08 2006 +0200
+@@ -506,22 +506,22 @@ fuse_response_prettyprint(enum fuse_opco
+ case FUSE_FSYNCDIR:
+ //pp_buf(fresp);
+ break;
+-#if FUSE_HAS_GETLK
++#ifdef FUSE_HAS_GETLK
+ case FUSE_GETLK:
+ panic("FUSE_GETLK implementor has forgotten to define a response body format check");
+ break;
+ #endif
+-#if FUSE_HAS_SETLK
++#ifdef FUSE_HAS_SETLK
+ case FUSE_SETLK:
+ panic("FUSE_SETLK implementor has forgotten to define a response body format check");
+ break;
+ #endif
+-#if FUSE_HAS_SETLKW
++#ifdef FUSE_HAS_SETLKW
+ case FUSE_SETLKW:
+ panic("FUSE_SETLKW implementor has forgotten to define a response body format check");
+ break;
+ #endif
+-#if FUSE_HAS_ACCESS
++#ifdef FUSE_HAS_ACCESS
+ case FUSE_ACCESS:
+ break;
+ #endif \ No newline at end of file
diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module_fuse.c b/sysutils/fusefs-kmod/files/patch-fuse_module_fuse.c
new file mode 100644
index 000000000000..0596aa02cc73
--- /dev/null
+++ b/sysutils/fusefs-kmod/files/patch-fuse_module_fuse.c
@@ -0,0 +1,321 @@
+--- fuse_module/fuse.c.orig Fri Feb 10 17:31:53 2006
++++ fuse_module/fuse.c Sun Jul 16 14:48:43 2006
+@@ -75,7 +75,7 @@
+ };
+
+
+-#if USE_OLD_CLONEHANDLER_API
++#ifdef USE_OLD_CLONEHANDLER_API
+ static void fusedev_clone(void *arg, char *name, int namelen, struct cdev **dev);
+ #else
+ static void fusedev_clone(void *arg, struct ucred *cred, char *name, int namelen, struct cdev **dev);
+@@ -120,7 +120,7 @@
+ __static void fuse_insert_message(struct fuse_ticket *tick);
+ __static fuse_handler_t fuse_standard_handler;
+ static fuse_handler_t fuse_fsync_handler;
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static fuse_handler_t fuse_forgetful_handler;
+ #endif
+
+@@ -852,27 +852,27 @@
+ case FUSE_FSYNCDIR:
+ err = blen == 0 ? 0 : EINVAL;
+ break;
+-#if FUSE_HAS_GETLK
++#ifdef FUSE_HAS_GETLK
+ case FUSE_GETLK:
+ panic("FUSE_GETLK implementor has forgotten to define a response body format check");
+ break;
+ #endif
+-#if FUSE_HAS_SETLK
++#ifdef FUSE_HAS_SETLK
+ case FUSE_SETLK:
+ panic("FUSE_SETLK implementor has forgotten to define a response body format check");
+ break;
+ #endif
+-#if FUSE_HAS_SETLKW
++#ifdef FUSE_HAS_SETLKW
+ case FUSE_SETLKW:
+ panic("FUSE_SETLKW implementor has forgotten to define a response body format check");
+ break;
+ #endif
+-#if FUSE_HAS_ACCESS
++#ifdef FUSE_HAS_ACCESS
+ case FUSE_ACCESS:
+ err = blen == 0 ? 0 : EINVAL;
+ break;
+ #endif
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ case FUSE_CREATE:
+ err = blen == sizeof(struct fuse_entry_out) + sizeof(struct fuse_open_out) ? 0 : EINVAL;
+ break;
+@@ -881,7 +881,7 @@
+ panic("fuse opcodes out of sync");
+ }
+
+-#if _DEBUG2G
++#ifdef _DEBUG2G
+ if (err)
+ DEBUG2G("op %s (#%d) with body size %d: invalid body size\n",
+ (0 <= opcode && opcode <= fuse_opnames_entries) ? fuse_opnames[opcode] : "???",
+@@ -988,7 +988,7 @@
+ return (0);
+ }
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static int
+ fuse_forgetful_handler(struct fuse_callback_node *caliban, struct uio *uio)
+ {
+@@ -1242,7 +1242,7 @@
+ static int
+ fusedev_write(struct cdev *dev, struct uio *uio, int ioflag)
+ {
+-#if _DEBUG_MSGING
++#ifdef _DEBUG_MSGING
+ static int counter=0;
+ #endif
+ struct fuse_out_header *ohead;
+@@ -1415,7 +1415,7 @@
+ if ((err = fuse_callbn_wait_answer(&fdip->tick->callbn))) {
+ /* Uh-huh, we got interrupted... */
+
+-#if ! DONT_TRY_HARD_PREVENT_IO_IN_VAIN
++#ifndef DONT_TRY_HARD_PREVENT_IO_IN_VAIN
+ struct fuse_callback_node *fcallbn;
+ unsigned age;
+ #endif
+@@ -1438,7 +1438,7 @@
+ age = fdip->tick->age;
+ fuse_callbn_set_answered(&fdip->tick->callbn);
+ mtx_unlock(&fdip->tick->callbn.answer_mtx);
+-#if ! DONT_TRY_HARD_PREVENT_IO_IN_VAIN
++#ifndef DONT_TRY_HARD_PREVENT_IO_IN_VAIN
+ /*
+ * If we are willing to pay with one more locking, we
+ * can save on I/O by getting the device write handler
+@@ -1662,7 +1662,7 @@
+ /* static vop_pathconf_t fuse_pathconf; */
+ static vfs_hash_cmp_t fuse_vnode_cmp;
+ static vfs_hash_cmp_t fuse_vnode_bgdrop_cmp;
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static vfs_hash_cmp_t fuse_vnode_fgdrop_cmp;
+ #endif
+ /* static vfs_vget_t fuse_vget; */
+@@ -1683,7 +1683,7 @@
+ static vop_lookup_t fuse_lookup;
+ static int iterate_filehandles(struct vnode *vp, struct thread *td, struct ucred *cred, fuse_metrics_t fmetr, void *param);
+ static fuse_metrics_t fuse_standard_metrics;
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static __inline int create_filehandle(struct vnode *vp, struct thread *td, struct ucred *cred, int mode, struct fuse_dispatcher *fdip);
+ #endif
+ static struct fuse_filehandle *get_filehandle(struct vnode *vp, struct thread *td, struct ucred *cred, int mode, struct get_filehandle_param *gefhp);
+@@ -1729,7 +1729,7 @@
+
+ static b_strategy_t fuse_bufstrategy;
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static vop_access_t fuse_germ_access;
+ #endif
+
+@@ -1773,7 +1773,7 @@
+ .vop_unlock = fuse_unlock,
+ };
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static struct vop_vector fuse_germ_vnops;
+ #endif
+
+@@ -2092,7 +2092,7 @@
+
+ if (! (fmnt->mntopts & FUSEFS_SECONDARY)) {
+ data->mp = mp;
+-#if ! REALTIME_TRACK_UNPRIVPROCDBG
++#ifndef REALTIME_TRACK_UNPRIVPROCDBG
+ fmnt->mntopts &= ~FUSEFS_UNPRIVPROCDBG;
+ fmnt->mntopts |= get_unprivileged_proc_debug(td) ? FUSEFS_UNPRIVPROCDBG : 0;
+ #endif
+@@ -2380,7 +2380,7 @@
+ return (0);
+ }
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ /*
+ * Vnode comparison function with which the given vnode always
+ * gets inserted, but got marked invalid upon a clash. Caller
+@@ -2654,7 +2654,7 @@
+
+ fuse_filehandle_gc(vp, td, NULL);
+
+-#if ! DONT_STORE_FS_MAP
++#ifndef DONT_STORE_FS_MAP
+ /*
+ * Dropping vnodes when they are not in use would mean that
+ * the respective inode must be freed on the daemon's side
+@@ -2751,7 +2751,7 @@
+ int denied;
+
+ if ((denied = cr_candebug(
+-#if REALTIME_TRACK_UNPRIVPROCDBG
++#ifdef REALTIME_TRACK_UNPRIVPROCDBG
+ get_unprivileged_proc_debug(td),
+ #else
+ fmnt->mntopts & FUSEFS_UNPRIVPROCDBG,
+@@ -2948,7 +2948,7 @@
+
+ } else {
+ struct sx *devlock = fdi.slock;
+-#if FUSE_HAS_ACCESS
++#ifdef FUSE_HAS_ACCESS
+ struct fuse_access_in *fai;
+
+ if (! (facp->facc_flags & FACCESS_DO_ACCESS))
+@@ -3056,7 +3056,7 @@
+
+ bzero(&facp, sizeof(facp));
+ if (
+-#if NO_EARLY_PERM_CHECK_HACK
++#ifdef NO_EARLY_PERM_CHECK_HACK
+ 1
+ #else
+ dvp->v_vflag & VV_ROOT
+@@ -3281,8 +3281,12 @@
+ DEBUG("we peacefully found that file\n");
+
+ if (flags & ISDOTDOT) {
+- vn_lock(pdp, LK_EXCLUSIVE | LK_RETRY, td);
++ VOP_UNLOCK(dvp, 0, td);
++ err = vn_lock(pdp, cnp->cn_lkflags, td);
+ VREF(pdp);
++ vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td);
++ if (err)
++ goto out;
+ *vpp = pdp;
+ } else if (nid == VTOI(dvp)) {
+ VREF(dvp); /* We want ourself, ie "." */
+@@ -3347,7 +3351,7 @@
+ if (islastcn && flags & ISOPEN)
+ ((struct fuse_vnode_data *)(*vpp)->v_data)->flags |= FVP_ACCESS_NOOP;
+
+-#if ! NO_EARLY_PERM_CHECK_HACK
++#ifndef NO_EARLY_PERM_CHECK_HACK
+ if (! islastcn) {
+ /* We have the attributes of the next item
+ * *now*, and it's a fact, and we do not have
+@@ -3486,7 +3490,7 @@
+ return (0);
+ }
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static __inline int
+ create_filehandle(struct vnode *vp, struct thread *td, struct ucred *cred,
+ int mode, struct fuse_dispatcher *fdip)
+@@ -3643,7 +3647,7 @@
+ * the vnode... if the vnode is a germ, it will be tried to be initialized
+ * via a dedicated method, but from that on we go on as usual.)
+ */
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ if (vp->v_op == &fuse_germ_vnops) {
+ KASSERT(gefhp, ("create_filehandle called without get_filehandle_param"));
+ gone_create = 1;
+@@ -3709,7 +3713,7 @@
+ if ((err = fdisp_wait_answ(&fdi)))
+ goto out;
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ setup_filehandle:
+ #endif
+ foo = fdi.answ;
+@@ -4184,7 +4188,7 @@
+ #define BSD_FUSE_PAGENO_BOUND MIN(FUSE_MAX_PAGES_PER_REQ, MAXBSIZE / PAGE_SIZE)
+
+ bcount = MIN(MAXBSIZE, biosize * BSD_FUSE_PAGENO_BOUND);
+-#if BIOREAD_CONSIDER_FILE_SIZE
++#ifdef BIOREAD_CONSIDER_FILE_SIZE
+ if (vp->v_type != VDIR) {
+ /*
+ * for directories we can't predict the size, in fact
+@@ -4493,7 +4497,7 @@
+ break;
+ }
+
+-#if ZERO_PAD_INCOMPLETE_BUFS
++#ifdef ZERO_PAD_INCOMPLETE_BUFS
+ if (isbzero(buf), FUSE_NAME_OFFSET) {
+ err = -1;
+ break;
+@@ -4658,7 +4662,7 @@
+ struct vnode *dvp = ap->a_dvp;
+ struct vnode **vpp = ap->a_vpp;
+ struct vattr *vap = ap->a_vap;
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ struct fuse_dispatcher fdi;
+ struct fuse_vnode_data *fvdat;
+ int err;
+@@ -4949,7 +4953,7 @@
+ if (err)
+ goto out;
+
+-#if ! DONT_DO_CHECKPATH
++#ifndef DONT_DO_CHECKPATH
+ if (doingdirectory && fdvp != tdvp) {
+ /*
+ * Check for pathname conflict.
+@@ -5741,7 +5745,7 @@
+ chunksize, (long long unsigned)fri->offset, respsize);
+
+ if (respsize < chunksize) {
+-#if ZERO_PAD_INCOMPLETE_BUFS
++#ifdef ZERO_PAD_INCOMPLETE_BUFS
+ /*
+ * "if we don't get enough data, just fill the
+ * rest with zeros."
+@@ -5888,7 +5892,7 @@
+ "vp=%p, rc=%d", bp, vp, rc));
+ }
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ static int
+ fuse_germ_access(struct vop_access_args *ap)
+ {
+@@ -5908,7 +5912,7 @@
+
+ /* Modeled after tunclone() of net/if_tun.c
+ */
+-#if USE_OLD_CLONEHANDLER_API
++#ifdef USE_OLD_CLONEHANDLER_API
+ static void
+ fusedev_clone(void *arg, char *name, int namelen, struct cdev **dev)
+ #else
+@@ -6019,7 +6023,7 @@
+ fuse_fileops.fo_close = fuse_close_f;
+ fuse_fileops.fo_flags = DFLAG_PASSABLE | DFLAG_SEEKABLE;
+
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ memcpy(&fuse_germ_vnops, &dead_vnodeops, sizeof(struct vop_vector));
+ fuse_germ_vnops.vop_access = fuse_germ_access;
+ fuse_germ_vnops.vop_open = fuse_open;
+--- fuse_module/fuse.c.orig Thu Aug 3 02:08:04 2006
++++ fuse_module/fuse.c Thu Aug 3 02:08:35 2006
+@@ -904,7 +904,7 @@
+ uint64_t nid, enum fuse_opcode op, size_t blen,
+ struct thread* td, struct ucred *cred)
+ {
+- ihead->len = sizeof(ihead) + blen; /* actually not used by lib */
++ ihead->len = sizeof(*ihead) + blen; /* actually not used by lib */
+ ihead->unique = tick->unique;
+ ihead->nodeid = nid;
+ ihead->opcode = op;
diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module_fuse.h b/sysutils/fusefs-kmod/files/patch-fuse_module_fuse.h
new file mode 100644
index 000000000000..916651d9827b
--- /dev/null
+++ b/sysutils/fusefs-kmod/files/patch-fuse_module_fuse.h
@@ -0,0 +1,112 @@
+--- fuse_module/fuse.h.orig Fri Feb 10 17:31:53 2006
++++ fuse_module/fuse.h Sun Jul 16 14:43:20 2006
+@@ -8,7 +8,7 @@
+
+ #ifndef USE_OLD_CLONEHANDLER_API
+ #if __FreeBSD_version < 600034 || ( __FreeBSD_version >= 700000 && __FreeBSD_version < 700002 )
+-#define USE_OLD_CLONEHANDLER_API 1
++#define USE_OLD_CLONEHANDLER_API
+ #endif
+ #endif
+
+@@ -19,10 +19,10 @@
+ */
+ #if FUSE_KERNELABI_GEQ(7, 3)
+ #ifndef FUSE_HAS_ACCESS
+-#define FUSE_HAS_ACCESS 1
++#define FUSE_HAS_ACCESS
+ #endif
+ #ifndef FUSE_HAS_CREATE
+-#define FUSE_HAS_CREATE 1
++#define FUSE_HAS_CREATE
+ #endif
+ #endif
+
+@@ -75,7 +75,7 @@
+ size_t len; /* To keep track of size of the data pushed into base, =< len, of course */
+ };
+
+-#if ! FUSE_AUX
++#ifndef FUSE_AUX
+ #ifndef FUSE_MAX_STORED_FREE_TICKETS
+ #define FUSE_MAX_STORED_FREE_TICKETS 0
+ #endif
+@@ -251,7 +251,7 @@
+ int flags;
+ LIST_HEAD(, fuse_filehandle) fh_head;
+ int fh_counter;
+-#if FUSE_HAS_CREATE
++#ifdef FUSE_HAS_CREATE
+ struct componentname *germcnp;
+ #endif
+ };
+@@ -260,6 +260,9 @@
+
+ /* Debug related stuff */
+
++#ifndef DEBUGTOLOG
++#define DEBUGTOLOG 0
++#endif
+ #if DEBUGTOLOG
+ #define dprintf(args ...) log(LOG_DEBUG, args)
+ #else
+@@ -267,6 +270,9 @@
+ #endif
+
+ #define DEBLABEL "[fuse-debug] "
++#ifndef _DEBUG
++#define _DEBUG 0
++#endif
+ #if _DEBUG
+ #ifndef _DEBUG2G
+ #define _DEBUG2G 1
+@@ -280,6 +286,9 @@
+ #define DEBUG(args ...)
+ #endif
+
++#ifndef _DEBUG2G
++#define _DEBUG2G 0
++#endif
+ #if _DEBUG2G
+ #ifndef _DEBUG3G
+ #define _DEBUG3G 1
+@@ -290,6 +299,9 @@
+ #define DEBUG2G(args ...)
+ #endif
+
++#ifndef _DEBUG3G
++#define _DEBUG3G 0
++#endif
+ #if _DEBUG3G
+ #define DEBUG3G(args, ...) \
+ printf(DEBLABEL "%s:%d: " args, __func__, __LINE__, ## __VA_ARGS__)
+@@ -297,13 +309,19 @@
+ #define DEBUG3G(args ...)
+ #endif
+
++#ifndef FMASTER
++#define FMASTER 0
++#endif
+ #if FMASTER
+ #ifndef _DEBUG_MSGING
+ #define _DEBUG_MSGING 1
+ #endif
+ #endif
+
+-#if _DEBUG_MSGING
++#ifndef _DEBUG_MSG
++#define _DEBUG_MSG 0
++#endif
++#ifdef _DEBUG_MSGING
+ #define fuprintf(args...) \
+ uprintf("[kern] " args)
+ #else
+@@ -319,7 +337,7 @@
+ void fprettyprint(struct fuse_iov *fiov, size_t dlen);
+ #endif
+
+-#if IGNORE_INLINE
++#ifdef IGNORE_INLINE
+ #define __inline
+ #endif
+
diff --git a/sysutils/fusefs-kmod/pkg-message b/sysutils/fusefs-kmod/pkg-message
index 2fbfbab80c31..6edda21edee7 100644
--- a/sysutils/fusefs-kmod/pkg-message
+++ b/sysutils/fusefs-kmod/pkg-message
@@ -2,7 +2,7 @@ In order to automatically load the fuse module on startup, you need to
set the following settings:
- Set the module path in /etc/sysctl.conf:
- kern.module_path="%%MODULE_PATH%%"
+ kern.module_path=%%MODULE_PATH%%
- Add fusefs_enable="YES" to your /etc/rc.conf