diff options
author | pi <pi@FreeBSD.org> | 2014-08-04 06:04:34 +0800 |
---|---|---|
committer | pi <pi@FreeBSD.org> | 2014-08-04 06:04:34 +0800 |
commit | 3ad69f13581076ef81b42e512eb5bb8fa63aaa82 (patch) | |
tree | 759406c1a7bfa6f93ee9485c844d7c518dca9e8c /sysutils/fusefs-kmod/files | |
parent | 50807cb2fff8d1bce3a37687b2f964aedb0a5f94 (diff) | |
download | freebsd-ports-gnome-3ad69f13581076ef81b42e512eb5bb8fa63aaa82.tar.gz freebsd-ports-gnome-3ad69f13581076ef81b42e512eb5bb8fa63aaa82.tar.zst freebsd-ports-gnome-3ad69f13581076ef81b42e512eb5bb8fa63aaa82.zip |
sysutils/fusefs-kmod: backport 10.x-integrated code for 8.x and 9.x
submitter takes over as maintainer
PR: 184042
Submitted by: dpejesh@yahoo.com
Approved by: mirror176@cox.net (maintainer timeout)
Diffstat (limited to 'sysutils/fusefs-kmod/files')
18 files changed, 390 insertions, 545 deletions
diff --git a/sysutils/fusefs-kmod/files/extra-patch-8-fuse_vfsops.c b/sysutils/fusefs-kmod/files/extra-patch-8-fuse_vfsops.c new file mode 100644 index 000000000000..2a5bb20d52ce --- /dev/null +++ b/sysutils/fusefs-kmod/files/extra-patch-8-fuse_vfsops.c @@ -0,0 +1,47 @@ +--- fs/fuse/fuse_vfsops.c.orig ++++ fs/fuse/fuse_vfsops.c +@@ -62,8 +62,8 @@ + #include <sys/errno.h> + #include <sys/param.h> + #include <sys/kernel.h> +-#include <sys/capsicum.h> + #include <sys/conf.h> ++#include <sys/file.h> + #include <sys/filedesc.h> + #include <sys/uio.h> + #include <sys/malloc.h> +@@ -206,7 +206,7 @@ + { + int err; + +- uint64_t mntopts, __mntopts; ++ u_int mntopts, __mntopts; + int max_read_set; + uint32_t max_read; + int daemon_timeout; +@@ -220,7 +220,6 @@ + struct file *fp, *fptmp; + char *fspec, *subtype; + struct vfsoptlist *opts; +- cap_rights_t rights; + + subtype = NULL; + max_read_set = 0; +@@ -290,7 +289,7 @@ + + FS_DEBUG2G("mntopts 0x%jx\n", (uintmax_t)mntopts); + +- err = fget(td, fd, cap_rights_init(&rights, CAP_READ), &fp); ++ err = fget(td, fd, &fp); + if (err != 0) { + FS_DEBUG("invalid or not opened device: data=%p\n", data); + goto out; +@@ -459,7 +458,7 @@ + FUSE_UNLOCK(); + VOP_UNLOCK(*vpp, 0); + vrele(*vpp); +- vrecycle(*vpp); ++ vrecycle(*vpp, curthread); + *vpp = data->vroot; + } else + FUSE_UNLOCK(); diff --git a/sysutils/fusefs-kmod/files/extra-patch-8-fuse_vnops.c b/sysutils/fusefs-kmod/files/extra-patch-8-fuse_vnops.c new file mode 100644 index 000000000000..b18b8190e643 --- /dev/null +++ b/sysutils/fusefs-kmod/files/extra-patch-8-fuse_vnops.c @@ -0,0 +1,146 @@ +--- fs/fuse/fuse_vnops.c.orig ++++ fs/fuse/fuse_vnops.c +@@ -190,10 +190,10 @@ + + int fuse_pbuf_freecnt = -1; + +-#define fuse_vm_page_lock(m) vm_page_lock((m)); +-#define fuse_vm_page_unlock(m) vm_page_unlock((m)); +-#define fuse_vm_page_lock_queues() ((void)0) +-#define fuse_vm_page_unlock_queues() ((void)0) ++#define fuse_vm_page_lock(m) ((void)0) ++#define fuse_vm_page_unlock(m) ((void)0) ++#define fuse_vm_page_lock_queues() vm_page_lock_queues() ++#define fuse_vm_page_unlock_queues() vm_page_unlock_queues() + + /* + struct vnop_access_args { +@@ -579,7 +579,7 @@ + } + + if ((fvdat->flag & FN_REVOKED) != 0 && fuse_reclaim_revoked) { +- vrecycle(vp); ++ vrecycle(vp, curthread); + } + return 0; + } +@@ -706,7 +706,7 @@ + op = FUSE_GETATTR; + goto calldaemon; + } else if (fuse_lookup_cache_enable) { +- err = cache_lookup(dvp, vpp, cnp, NULL, NULL); ++ err = cache_lookup(dvp, vpp, cnp); + switch (err) { + + case -1: /* positive match */ +@@ -1758,7 +1758,7 @@ + * can only occur at the file EOF. + */ + +- VM_OBJECT_WLOCK(vp->v_object); ++ VM_OBJECT_LOCK(vp->v_object); + fuse_vm_page_lock_queues(); + if (pages[ap->a_reqpage]->valid != 0) { + for (i = 0; i < npages; ++i) { +@@ -1769,11 +1769,11 @@ + } + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + return 0; + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + + /* + * We use only the kva address for the buffer, but this is extremely +@@ -1803,7 +1803,7 @@ + + if (error && (uio.uio_resid == count)) { + FS_DEBUG("error %d\n", error); +- VM_OBJECT_WLOCK(vp->v_object); ++ VM_OBJECT_LOCK(vp->v_object); + fuse_vm_page_lock_queues(); + for (i = 0; i < npages; ++i) { + if (i != ap->a_reqpage) { +@@ -1813,7 +1813,7 @@ + } + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + return VM_PAGER_ERROR; + } + /* +@@ -1823,7 +1823,7 @@ + */ + + size = count - uio.uio_resid; +- VM_OBJECT_WLOCK(vp->v_object); ++ VM_OBJECT_LOCK(vp->v_object); + fuse_vm_page_lock_queues(); + for (i = 0, toff = 0; i < npages; i++, toff = nextoff) { + vm_page_t m; +@@ -1843,7 +1843,7 @@ + * Read operation filled a partial page. + */ + m->valid = 0; +- vm_page_set_valid_range(m, 0, size - toff); ++ vm_page_set_valid(m, 0, size - toff); + KASSERT(m->dirty == 0, + ("fuse_getpages: page %p is dirty", m)); + } else { +@@ -1854,11 +1854,36 @@ + */ + ; + } +- if (i != ap->a_reqpage) +- vm_page_readahead_finish(m); ++ if (i != ap->a_reqpage) { ++ /* ++ * whether or not to leave the page activated is up in ++ * the air, but we should put the page on a page queue ++ * somewhere. (it already is in the object). Result: ++ * It appears that empirical results show that ++ * deactivating pages is best. ++ */ ++ ++ /* ++ * just in case someone was asking for this page we ++ * now tell them that it is ok to use ++ */ ++ if (!error) { ++#ifdef VPO_WANTED ++ if (m->oflags & VPO_WANTED) ++#else ++ if (m->flags & PG_WANTED) ++#endif ++ vm_page_activate(m); ++ else ++ vm_page_deactivate(m); ++ vm_page_wakeup(m); ++ } else { ++ vm_page_free(m); ++ } ++ } + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + return 0; + } + +@@ -1947,9 +1972,9 @@ + + for (i = 0; i < nwritten; i++) { + rtvals[i] = VM_PAGER_OK; +- VM_OBJECT_WLOCK(pages[i]->object); ++ VM_OBJECT_LOCK(pages[i]->object); + vm_page_undirty(pages[i]); +- VM_OBJECT_WUNLOCK(pages[i]->object); ++ VM_OBJECT_UNLOCK(pages[i]->object); + } + } + return rtvals[0]; diff --git a/sysutils/fusefs-kmod/files/extra-patch-9-fuse_vfsops.c b/sysutils/fusefs-kmod/files/extra-patch-9-fuse_vfsops.c new file mode 100644 index 000000000000..f38a35662abf --- /dev/null +++ b/sysutils/fusefs-kmod/files/extra-patch-9-fuse_vfsops.c @@ -0,0 +1,37 @@ +--- fs/fuse/fuse_vfsops.c.orig ++++ fs/fuse/fuse_vfsops.c +@@ -62,7 +62,7 @@ __FBSDID("$FreeBSD$"); + #include <sys/errno.h> + #include <sys/param.h> + #include <sys/kernel.h> +-#include <sys/capsicum.h> ++#include <sys/capability.h> + #include <sys/conf.h> + #include <sys/filedesc.h> + #include <sys/uio.h> +@@ -220,7 +220,6 @@ fuse_vfsop_mount(struct mount *mp) + struct file *fp, *fptmp; + char *fspec, *subtype; + struct vfsoptlist *opts; +- cap_rights_t rights; + + subtype = NULL; + max_read_set = 0; +@@ -290,7 +289,7 @@ fuse_vfsop_mount(struct mount *mp) + + FS_DEBUG2G("mntopts 0x%jx\n", (uintmax_t)mntopts); + +- err = fget(td, fd, cap_rights_init(&rights, CAP_READ), &fp); ++ err = fget(td, fd, CAP_READ, &fp); + if (err != 0) { + FS_DEBUG("invalid or not opened device: data=%p\n", data); + goto out; +@@ -459,7 +458,7 @@ fuse_vfsop_root(struct mount *mp, int lkflags, struct vnode **vpp) + FUSE_UNLOCK(); + VOP_UNLOCK(*vpp, 0); + vrele(*vpp); +- vrecycle(*vpp); ++ vrecycle(*vpp, curthread); + *vpp = data->vroot; + } else + FUSE_UNLOCK(); diff --git a/sysutils/fusefs-kmod/files/extra-patch-9-fuse_vnops.c b/sysutils/fusefs-kmod/files/extra-patch-9-fuse_vnops.c new file mode 100644 index 000000000000..2f49f897050b --- /dev/null +++ b/sysutils/fusefs-kmod/files/extra-patch-9-fuse_vnops.c @@ -0,0 +1,134 @@ +--- fs/fuse/fuse_vnops.c.orig ++++ fs/fuse/fuse_vnops.c +@@ -579,7 +579,7 @@ fuse_vnop_inactive(struct vop_inactive_args *ap) + } + + if ((fvdat->flag & FN_REVOKED) != 0 && fuse_reclaim_revoked) { +- vrecycle(vp); ++ vrecycle(vp, curthread); + } + return 0; + } +@@ -706,7 +706,7 @@ fuse_vnop_lookup(struct vop_lookup_args *ap) + op = FUSE_GETATTR; + goto calldaemon; + } else if (fuse_lookup_cache_enable) { +- err = cache_lookup(dvp, vpp, cnp, NULL, NULL); ++ err = cache_lookup(dvp, vpp, cnp); + switch (err) { + + case -1: /* positive match */ +@@ -1758,7 +1758,7 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) + * can only occur at the file EOF. + */ + +- VM_OBJECT_WLOCK(vp->v_object); ++ VM_OBJECT_LOCK(vp->v_object); + fuse_vm_page_lock_queues(); + if (pages[ap->a_reqpage]->valid != 0) { + for (i = 0; i < npages; ++i) { +@@ -1769,11 +1769,11 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) + } + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + return 0; + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + + /* + * We use only the kva address for the buffer, but this is extremely +@@ -1803,7 +1803,7 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) + + if (error && (uio.uio_resid == count)) { + FS_DEBUG("error %d\n", error); +- VM_OBJECT_WLOCK(vp->v_object); ++ VM_OBJECT_LOCK(vp->v_object); + fuse_vm_page_lock_queues(); + for (i = 0; i < npages; ++i) { + if (i != ap->a_reqpage) { +@@ -1813,7 +1813,7 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) + } + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + return VM_PAGER_ERROR; + } + /* +@@ -1823,7 +1823,7 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) + */ + + size = count - uio.uio_resid; +- VM_OBJECT_WLOCK(vp->v_object); ++ VM_OBJECT_LOCK(vp->v_object); + fuse_vm_page_lock_queues(); + for (i = 0, toff = 0; i < npages; i++, toff = nextoff) { + vm_page_t m; +@@ -1843,7 +1843,7 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) + * Read operation filled a partial page. + */ + m->valid = 0; +- vm_page_set_valid_range(m, 0, size - toff); ++ vm_page_set_valid(m, 0, size - toff); + KASSERT(m->dirty == 0, + ("fuse_getpages: page %p is dirty", m)); + } else { +@@ -1854,11 +1854,39 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) + */ + ; + } +- if (i != ap->a_reqpage) +- vm_page_readahead_finish(m); ++ if (i != ap->a_reqpage) { ++ /* ++ * whether or not to leave the page activated is up in ++ * the air, but we should put the page on a page queue ++ * somewhere. (it already is in the object). Result: ++ * It appears that empirical results show that ++ * deactivating pages is best. ++ */ ++ ++ /* ++ * just in case someone was asking for this page we ++ * now tell them that it is ok to use ++ */ ++ if (!error) { ++ if (m->oflags & VPO_WANTED) { ++ vm_page_lock(m); ++ vm_page_activate(m); ++ vm_page_unlock(m); ++ } else { ++ vm_page_lock(m); ++ vm_page_deactivate(m); ++ vm_page_unlock(m); ++ } ++ vm_page_wakeup(m); ++ } else { ++ vm_page_lock(m); ++ vm_page_free(m); ++ vm_page_unlock(m); ++ } ++ } + } + fuse_vm_page_unlock_queues(); +- VM_OBJECT_WUNLOCK(vp->v_object); ++ VM_OBJECT_UNLOCK(vp->v_object); + return 0; + } + +@@ -1947,9 +1975,9 @@ fuse_vnop_putpages(struct vop_putpages_args *ap) + + for (i = 0; i < nwritten; i++) { + rtvals[i] = VM_PAGER_OK; +- VM_OBJECT_WLOCK(pages[i]->object); ++ VM_OBJECT_LOCK(pages[i]->object); + vm_page_undirty(pages[i]); +- VM_OBJECT_WUNLOCK(pages[i]->object); ++ VM_OBJECT_UNLOCK(pages[i]->object); + } + } + return rtvals[0]; diff --git a/sysutils/fusefs-kmod/files/extra-patch-fuse_module__fuse_vnops.c b/sysutils/fusefs-kmod/files/extra-patch-fuse_module__fuse_vnops.c deleted file mode 100644 index f776c3bd9cb5..000000000000 --- a/sysutils/fusefs-kmod/files/extra-patch-fuse_module__fuse_vnops.c +++ /dev/null @@ -1,11 +0,0 @@ ---- fuse_module/fuse_vfsops.c.orig 2008-02-05 07:25:57.000000000 +0200 -+++ fuse_module/fuse_vfsops.c 2011-09-08 10:27:43.000000000 +0300 -@@ -224,7 +231,7 @@ - struct cdev *fdev; - struct sx *slock; - struct fuse_data *data; -- int mntopts = 0, __mntopts = 0, max_read_set = 0, secondary = 0; -+ uint64_t mntopts = 0, __mntopts = 0, max_read_set = 0, secondary = 0; - unsigned max_read = ~0; - struct vnode *rvp; - struct fuse_vnode_data *fvdat; diff --git a/sysutils/fusefs-kmod/files/extrapatch-fuse_module__fuse_vnops.c b/sysutils/fusefs-kmod/files/extrapatch-fuse_module__fuse_vnops.c deleted file mode 100644 index e74e067fbf7c..000000000000 --- a/sysutils/fusefs-kmod/files/extrapatch-fuse_module__fuse_vnops.c +++ /dev/null @@ -1,11 +0,0 @@ ---- fuse_module/fuse_vnops.c.orig 2012-05-11 14:59:59.000000000 +0800 -+++ fuse_module/fuse_vnops.c 2012-05-11 15:00:05.000000000 +0800 -@@ -663,7 +663,7 @@ - if ((err = fuse_recyc_backend(vp, td))) - return err; - -- vrecycle(vp, td); -+ vrecycle(vp); - - return (0); - } diff --git a/sysutils/fusefs-kmod/files/fusefs.in b/sysutils/fusefs-kmod/files/fusefs.in index 420d87f33bd4..6b50625100d9 100644 --- a/sysutils/fusefs-kmod/files/fusefs.in +++ b/sysutils/fusefs-kmod/files/fusefs.in @@ -27,7 +27,7 @@ name="fusefs" rcvar=fusefs_enable -kmod="%%PREFIX%%/modules/fuse.ko" +kmod="%%KMODDIR%%/fuse.ko" start_cmd="fusefs_start" stop_cmd="fusefs_stop" diff --git a/sysutils/fusefs-kmod/files/patch-fuse_io.c b/sysutils/fusefs-kmod/files/patch-fuse_io.c new file mode 100644 index 000000000000..c5a9597a37db --- /dev/null +++ b/sysutils/fusefs-kmod/files/patch-fuse_io.c @@ -0,0 +1,14 @@ +--- fs/fuse/fuse_io.c.orig ++++ fs/fuse/fuse_io.c +@@ -785,9 +785,9 @@ fuse_io_invalbuf(struct vnode *vp, struct thread *td) + fvdat->flag |= FN_FLUSHINPROG; + + if (vp->v_bufobj.bo_object != NULL) { +- VM_OBJECT_WLOCK(vp->v_bufobj.bo_object); ++ VM_OBJECT_LOCK(vp->v_bufobj.bo_object); + vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); +- VM_OBJECT_WUNLOCK(vp->v_bufobj.bo_object); ++ VM_OBJECT_UNLOCK(vp->v_bufobj.bo_object); + } + error = vinvalbuf(vp, V_SAVE, PCATCH, 0); + while (error) { diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module__Makefile b/sysutils/fusefs-kmod/files/patch-fuse_module__Makefile deleted file mode 100644 index 91abac26843f..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module__Makefile +++ /dev/null @@ -1,18 +0,0 @@ ---- fuse_module/Makefile.orig 2008-02-05 08:25:57.000000000 +0300 -+++ fuse_module/Makefile 2009-01-14 00:29:13.000000000 +0300 -@@ -1,3 +1,5 @@ -+.undef KERNCONF -+ - .include "../Makefile.common" - - SRCS = fuse_main.c \ -@@ -22,7 +24,8 @@ - - .if defined(KERNCONF) - KERNCONF1!= echo ${KERNCONF} | sed -e 's/ .*//g' --KERNCONFDIR= /usr/obj/usr/src/sys/${KERNCONF1} -+KRNLOBJDIR!= make -C /usr/src -f /usr/src/Makefile.inc1 -V KRNLOBJDIR -+KERNCONFDIR= ${KRNLOBJDIR}/${KERNCONF1} - .endif - - .if defined(KERNCONFDIR) diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse.h b/sysutils/fusefs-kmod/files/patch-fuse_module__fuse.h deleted file mode 100644 index 5cc04a647a96..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse.h +++ /dev/null @@ -1,40 +0,0 @@ ---- fuse_module/fuse.h.orig 2008-02-05 00:25:57.000000000 -0500 -+++ fuse_module/fuse.h 2009-05-13 18:40:19.000000000 -0400 -@@ -25,6 +25,22 @@ - #endif - #endif - -+#ifndef VFSOPS_TAKES_THREAD -+#if __FreeBSD_version >= 800087 -+#define VFSOPS_TAKES_THREAD 0 -+#else -+#define VFSOPS_TAKES_THREAD 1 -+#endif -+#endif -+ -+#ifndef VOP_ACCESS_TAKES_ACCMODE_T -+#if __FreeBSD_version >= 800052 -+#define VOP_ACCESS_TAKES_ACCMODE_T 1 -+#else -+#define VOP_ACCESS_TAKES_ACCMODE_T 0 -+#endif -+#endif -+ - #ifndef VOP_OPEN_TAKES_FP - #if __FreeBSD_version >= 700044 - #define VOP_OPEN_TAKES_FP 1 -@@ -49,6 +65,14 @@ - #endif - #endif - -+#ifndef VOP_GETATTR_TAKES_THREAD -+#if __FreeBSD_version >= 800046 -+#define VOP_GETATTR_TAKES_THREAD 0 -+#else -+#define VOP_GETATTR_TAKES_THREAD 1 -+#endif -+#endif -+ - #ifndef USE_PRIVILEGE_API - /* - * __FreeBSD_version bump was omitted for introduction of diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_dev.c b/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_dev.c deleted file mode 100644 index d141b907a583..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_dev.c +++ /dev/null @@ -1,31 +0,0 @@ ---- fuse_module/fuse_dev.c -+++ fuse_module/fuse_dev.c -@@ -52,8 +52,13 @@ - .d_read = fusedev_read, - .d_write = fusedev_write, - .d_version = D_VERSION, -+#ifndef D_NEEDMINOR -+#define D_NEEDMINOR 0 -+#endif - #if ! DO_GIANT_MANUALLY -- .d_flags = D_NEEDGIANT, -+ .d_flags = D_NEEDMINOR|D_NEEDGIANT, -+#else -+ .d_flags = D_NEEDMINOR, - #endif - }; - -@@ -548,7 +553,12 @@ - /* find any existing device, or allocate new unit number */ - i = clone_create(&fuseclones, &fuse_cdevsw, &unit, dev, 0); - if (i) { -- *dev = make_dev(&fuse_cdevsw, unit2minor(unit), -+ *dev = make_dev(&fuse_cdevsw, -+#if __FreeBSD_version < 800062 -+ unit2minor(unit), -+#else /* __FreeBSD_version >= 800062 */ -+ unit, -+#endif /* __FreeBSD_version < 800062 */ - UID_ROOT, GID_OPERATOR, - S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP, - "fuse%d", unit); diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_io.c b/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_io.c deleted file mode 100644 index 9c3f7e369ef8..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_io.c +++ /dev/null @@ -1,133 +0,0 @@ ---- fuse_module/fuse_io.c.orig 2008-02-05 00:25:57.000000000 -0500 -+++ fuse_module/fuse_io.c 2009-07-13 09:31:24.000000000 -0400 -@@ -35,6 +35,10 @@ - #include <vm/vnode_pager.h> - #include <vm/vm_object.h> - -+#if (__FreeBSD_version >= 800000) -+#define vfs_bio_set_validclean vfs_bio_set_valid -+#endif -+ - #include "fuse.h" - #include "fuse_session.h" - #include "fuse_vnode.h" -@@ -157,7 +161,11 @@ - goto out; - - if (uio->uio_rw == UIO_WRITE && fp->f_flag & O_APPEND) { -- if ((err = VOP_GETATTR(vp, &va, cred, td))) -+ if ((err = VOP_GETATTR(vp, &va, cred -+#if VOP_GETATTR_TAKES_THREAD -+ , td -+#endif -+ ))) - goto out; - uio->uio_offset = va.va_size; - } else if ((flags & FOF_OFFSET) == 0) -@@ -227,7 +235,7 @@ - return (0); - - biosize = vp->v_mount->mnt_stat.f_iosize; -- bcount = min(MAXBSIZE, biosize); -+ bcount = MIN(MAXBSIZE, biosize); - - DEBUG2G("entering loop\n"); - do { -@@ -352,7 +360,7 @@ - fri = fdi.indata; - fri->fh = fufh->fh_id; - fri->offset = uio->uio_offset; -- fri->size = min(uio->uio_resid, -+ fri->size = MIN(uio->uio_resid, - fusefs_get_data(vp->v_mount)->max_read); - - DEBUG2G("fri->fh %llu, fri->offset %d, fri->size %d\n", -@@ -399,7 +407,7 @@ - while (uio->uio_resid > 0) { - int transfersize; - -- chunksize = min(iov->iov_len, nmax); -+ chunksize = MIN(iov->iov_len, nmax); - - if (uio->uio_rw == UIO_READ) { - struct fuse_read_in *fri; -@@ -464,7 +472,7 @@ - { - int err; - -- if ((err = uiomove(buf, min(reqsize, bufsize), uio))) -+ if ((err = uiomove(buf, MIN(reqsize, bufsize), uio))) - return (err); - - if (bufsize < reqsize) -@@ -502,7 +510,7 @@ - } - - while (uio->uio_resid > 0) { -- chunksize = min(uio->uio_resid, -+ chunksize = MIN(uio->uio_resid, - fusefs_get_data(vp->v_mount)->max_write); - - fdi.iosize = sizeof(*fwi) + chunksize; -@@ -569,7 +577,7 @@ - do { - lbn = uio->uio_offset / biosize; - on = uio->uio_offset & (biosize-1); -- n = min((unsigned)(biosize - on), uio->uio_resid); -+ n = MIN((unsigned)(biosize - on), uio->uio_resid); - - DEBUG2G("lbn %d, on %d, n %d, uio offset %d, uio resid %d\n", - (int)lbn, on, n, (int)uio->uio_offset, uio->uio_resid); -@@ -739,8 +747,8 @@ - */ - if (n) { - if (bp->b_dirtyend > 0) { -- bp->b_dirtyoff = min(on, bp->b_dirtyoff); -- bp->b_dirtyend = max((on + n), bp->b_dirtyend); -+ bp->b_dirtyoff = MIN(on, bp->b_dirtyoff); -+ bp->b_dirtyend = MAX((on + n), bp->b_dirtyend); - } else { - bp->b_dirtyoff = on; - bp->b_dirtyend = on + n; -@@ -823,7 +831,11 @@ - #if FUSELIB_CONFORM_BIOREAD - struct vattr va; - -- if ((err = VOP_GETATTR(vp, &va, cred, curthread))) -+ if ((err = VOP_GETATTR(vp, &va, cred -+#if VOP_GETATTR_TAKES_THREAD -+ , curthread -+#endif -+ ))) - goto out; - #endif - -@@ -831,7 +843,7 @@ - bp->b_resid = bp->b_bcount; - while (bp->b_resid > 0) { - DEBUG2G("starting bio with resid %ld\n", bp->b_resid); -- chunksize = min(bp->b_resid, -+ chunksize = MIN(bp->b_resid, - fusefs_get_data(vp->v_mount)->max_read); - fdi.iosize = sizeof(*fri); - if (! op) -@@ -842,8 +854,8 @@ - fri->fh = fufh->fh_id; - fri->offset = ((off_t)bp->b_blkno) * biosize + ioff; - #if FUSELIB_CONFORM_BIOREAD -- chunksize = min(chunksize, -- min(fri->offset + bp->b_resid, -+ chunksize = MIN(chunksize, -+ MIN(fri->offset + bp->b_resid, - va.va_size) - fri->offset); - if (chunksize == 0) { - respsize = -1; -@@ -901,7 +913,7 @@ - - bufdat = bp->b_data + bp->b_dirtyoff; - while (bp->b_dirtyend > bp->b_dirtyoff) { -- chunksize = min(bp->b_dirtyend - bp->b_dirtyoff, -+ chunksize = MIN(bp->b_dirtyend - bp->b_dirtyoff, - fusefs_get_data(vp->v_mount)->max_write); - - fdi.iosize = sizeof(*fwi); diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_main.c b/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_main.c deleted file mode 100644 index 1d44eab49570..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_main.c +++ /dev/null @@ -1,14 +0,0 @@ ---- fuse_module/fuse_main.c.00 2010-08-15 14:40:29.000000000 +0400 -+++ fuse_module/fuse_main.c 2010-08-15 15:56:56.000000000 +0400 -@@ -108,6 +108,9 @@ - switch (what) { - case MOD_LOAD: /* kldload */ - -+#if __FreeBSD_version > 800009 -+ fuse_fileops.fo_truncate = vnops.fo_truncate; -+#endif - fuse_fileops.fo_ioctl = vnops.fo_ioctl; - fuse_fileops.fo_poll = vnops.fo_poll; - fuse_fileops.fo_kqfilter = vnops.fo_kqfilter; - - diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vfsops.c b/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vfsops.c deleted file mode 100644 index 8db4eace2b94..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vfsops.c +++ /dev/null @@ -1,122 +0,0 @@ ---- fuse_module/fuse_vfsops.c.orig 2008-02-05 00:25:57.000000000 -0500 -+++ fuse_module/fuse_vfsops.c 2009-05-13 18:54:01.000000000 -0400 -@@ -18,6 +18,7 @@ - #include <sys/namei.h> - #include <sys/mount.h> - #include <sys/sysctl.h> -+#include <sys/fcntl.h> - - #include "fuse.h" - #include "fuse_session.h" -@@ -213,8 +214,14 @@ - * Mount system call - */ - static int -+#if VFSOPS_TAKES_THREAD - fuse_mount(struct mount *mp, struct thread *td) - { -+#else -+fuse_mount(struct mount *mp) -+{ -+ struct thread *td = curthread; -+#endif - int err = 0; - size_t len; - char *fspec, *subtype = NULL; -@@ -529,8 +536,14 @@ - * Unmount system call - */ - static int -+#if VFSOPS_TAKES_THREAD - fuse_unmount(struct mount *mp, int mntflags, struct thread *td) - { -+#else -+fuse_unmount(struct mount *mp, int mntflags) -+{ -+ struct thread *td = curthread; -+#endif - int flags = 0, err = 0; - struct fuse_data *data; - struct fuse_secondary_data *fsdat = NULL; -@@ -633,8 +646,14 @@ - - /* stolen from portalfs */ - static int -+#if VFSOPS_TAKES_THREAD - fuse_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td) - { -+#else -+fuse_root(struct mount *mp, int flags, struct vnode **vpp) -+{ -+ struct thread *td = curthread; -+#endif - /* - * Return locked reference to root. - */ -@@ -650,7 +669,11 @@ - data = fsdat->master; - sx_slock(&data->mhierlock); - if (data->mpri == FM_PRIMARY) -- err = fuse_root(data->mp, flags, vpp, td); -+ err = fuse_root(data->mp, flags, vpp -+#if VFSOPS_TAKES_THREAD -+ , td -+#endif -+ ); - else - err = ENXIO; - sx_sunlock(&data->mhierlock); -@@ -667,7 +690,11 @@ - if (vp->v_type == VNON) { - struct vattr va; - -- (void)VOP_GETATTR(vp, &va, td->td_ucred, td); -+ (void)VOP_GETATTR(vp, &va, td->td_ucred -+#if VOP_GETATTR_TAKES_THREAD -+ , td -+#endif -+ ); - } - *vpp = vp; - #if _DEBUG2G -@@ -678,8 +705,14 @@ - } - - static int -+#if VFSOPS_TAKES_THREAD - fuse_statfs(struct mount *mp, struct statfs *sbp, struct thread *td) - { -+#else -+fuse_statfs(struct mount *mp, struct statfs *sbp) -+{ -+ struct thread *td = curthread; -+#endif - struct fuse_dispatcher fdi; - struct fuse_statfs_out *fsfo; - struct fuse_data *data; -@@ -696,7 +729,11 @@ - - sx_slock(&data->mhierlock); - if (data->mpri == FM_PRIMARY) -- err = fuse_statfs(data->mp, sbp, td); -+ err = fuse_statfs(data->mp, sbp -+#if VFSOPS_TAKES_THREAD -+ , td -+#endif -+ ); - else - err = ENXIO; - sx_sunlock(&data->mhierlock); -@@ -794,7 +831,11 @@ - if (nodeid == FUSE_ROOT_ID) { - if (parentid != FUSE_NULL_ID) - return (ENOENT); -- err = VFS_ROOT(mp, myflags, vpp, td); -+ err = VFS_ROOT(mp, myflags, vpp -+#if VFSOPS_TAKES_THREAD -+ , td -+#endif -+ ); - if (err) - return (err); - KASSERT(*vpp, ("we neither err'd nor found the root node")); diff --git a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vnops.c b/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vnops.c deleted file mode 100644 index 9db4ced01e82..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vnops.c +++ /dev/null @@ -1,89 +0,0 @@ ---- ./fuse_module/fuse_vnops.c.orig 2012-09-19 06:04:10.512413490 +0200 -+++ ./fuse_module/fuse_vnops.c 2012-09-19 06:20:44.949613892 +0200 -@@ -799,8 +799,11 @@ - struct vnode *vp = ap->a_vp; - struct vattr *vap = ap->a_vap; - struct ucred *cred = ap->a_cred; -+#if VOP_GETATTR_TAKES_THREAD - struct thread *td = ap->a_td; -- -+#else -+ struct thread *td = curthread; -+#endif - struct fuse_dispatcher fdi; - struct timespec uptsp; - int err = 0; -@@ -871,7 +874,11 @@ - fuse_access(ap) - struct vop_access_args /* { - struct vnode *a_vp; -+#if VOP_ACCESS_TAKES_ACCMODE_T -+ accmode_t a_accmode; -+#else - int a_mode; -+#endif - struct ucred *a_cred; - struct thread *a_td; - } */ *ap; -@@ -886,7 +893,13 @@ - else - facp.facc_flags |= FACCESS_DO_ACCESS; - -- return fuse_access_i(vp, ap->a_mode, ap->a_cred, ap->a_td, &facp); -+ return fuse_access_i(vp, -+#if VOP_ACCESS_TAKES_ACCMODE_T -+ ap->a_accmode, -+#else -+ ap->a_mode, -+#endif -+ ap->a_cred, ap->a_td, &facp); - } - - /* -@@ -946,7 +959,11 @@ - /* We are to do the check in-kernel */ - - if (! (facp->facc_flags & FACCESS_VA_VALID)) { -- err = VOP_GETATTR(vp, VTOVA(vp), cred, td); -+ err = VOP_GETATTR(vp, VTOVA(vp), cred -+#if VOP_GETATTR_TAKES_THREAD -+ , td -+#endif -+ ); - if (err) - return (err); - facp->facc_flags |= FACCESS_VA_VALID; -@@ -1544,7 +1561,7 @@ - struct fuse_vnode_data *fvdat = VTOFUD(vp); - uint64_t parentid = fvdat->parent_nid; - struct componentname *cnp = fvdat->germcnp; -- struct fuse_open_in *foi; -+ struct fuse_create_in *foi; - struct fuse_entry_out *feo; - struct fuse_mknod_in fmni; - int err; -@@ -1929,7 +1946,11 @@ - * It will not invalidate pages which are dirty, locked, under - * writeback or mapped into pagetables.") - */ -+#if VOP_GETATTR_TAKES_THREAD - err = vinvalbuf(vp, 0, td, PCATCH, 0); -+#else -+ err = vinvalbuf(vp, 0, PCATCH, 0); -+#endif - fufh->flags |= FOPEN_KEEP_CACHE; - } - -@@ -3005,8 +3026,11 @@ - struct vattr *vap = ap->a_vap; - struct vnode *vp = ap->a_vp; - struct ucred *cred = ap->a_cred; -+#if VOP_GETATTR_TAKES_THREAD - struct thread *td = ap->a_td; -- -+#else -+ struct thread *td = curthread; -+#endif - int err = 0; - struct fuse_dispatcher fdi; - struct fuse_setattr_in *fsai; diff --git a/sysutils/fusefs-kmod/files/patch-fuse_node.c b/sysutils/fusefs-kmod/files/patch-fuse_node.c new file mode 100644 index 000000000000..a0d286d1e7d3 --- /dev/null +++ b/sysutils/fusefs-kmod/files/patch-fuse_node.c @@ -0,0 +1,11 @@ +--- fs/fuse/fuse_node.c.orig ++++ fs/fuse/fuse_node.c +@@ -362,7 +362,7 @@ fuse_vnode_setsize(struct vnode *vp, struct ucred *cred, off_t newsize) + fvdat->flag |= FN_SIZECHANGE; + + if (newsize < oldsize) { +- err = vtruncbuf(vp, cred, newsize, fuse_iosize(vp)); ++ err = vtruncbuf(vp, cred, curthread, newsize, fuse_iosize(vp)); + } + vnode_pager_setsize(vp, newsize); + return err; diff --git a/sysutils/fusefs-kmod/files/patch-mount_fusefs__mount_fusefs.c b/sysutils/fusefs-kmod/files/patch-mount_fusefs__mount_fusefs.c deleted file mode 100644 index ed2cab2bf8c8..000000000000 --- a/sysutils/fusefs-kmod/files/patch-mount_fusefs__mount_fusefs.c +++ /dev/null @@ -1,23 +0,0 @@ ---- mount_fusefs/mount_fusefs.c 2008-02-05 07:25:57.000000000 +0200 -+++ mount_fusefs/mount_fusefs.c 2012-01-07 21:07:35.000000000 +0200 -@@ -44,6 +44,7 @@ - #include <getopt.h> - #include <libgen.h> - #include <limits.h> -+#include <osreldate.h> - #include <paths.h> - - #include "fuse4bsd.h" -@@ -312,7 +313,12 @@ - * Resolve the mountpoint with realpath(3) and remove unnecessary - * slashes from the devicename if there are any. - */ -+#if __FreeBSD_version >= 1000005 -+ if (checkpath(dir, mntpath) != 0) -+ err(1, "%s", mntpath); -+#else - (void)checkpath(dir, mntpath); -+#endif - (void)rmslashes(dev, dev); - - if (strcmp(dev, "auto") == 0) diff --git a/sysutils/fusefs-kmod/files/setup.sh.in b/sysutils/fusefs-kmod/files/setup.sh.in deleted file mode 100644 index 99a873fccde5..000000000000 --- a/sysutils/fusefs-kmod/files/setup.sh.in +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# -# Automatically setup the loading of the module without polluting /boot/modules -SYSCTL_CONFIG=/etc/sysctl.conf -LOADER_CONFIG=/etc/rc.conf - -sysctl kern.module_path | grep "[:space:;=]%%PREFIX%%/modules[;]\?\b" > /dev/null 2>&1; RESULT=$? -if [ ${RESULT} -eq 1 ]; then - MODULE_PATH="`sysctl -n kern.module_path`;%%PREFIX%%/modules" - sysctl "kern.module_path=${MODULE_PATH}" -else - MODULE_PATH=`sysctl -n kern.module_path` -fi - -grep "kern\.module_path" ${SYSCTL_CONFIG} > /dev/null 2>&1; RESULT=$? -if [ ${RESULT} -eq 0 ]; then - # Variable present - grep "kern\.module_path" ${SYSCTL_CONFIG} | grep "[:space:;=]%%PREFIX%%/modules[;]\?\b" ${SYSCTL_CONFIG} > /dev/null 2>&1; RESULT=$? - if [ ${RESULT} -eq 1 ]; then - # Not present in variable, so add - ESC_PREFIX=`echo '%%PREFIX%%' | sed -e 's/\//\\\\\//g'` - sed -i .orig -e 's/kern\.module_path[:space:]*=[:space:]*["]*\([[:alnum:][:space:]\.,;\/_-]*\)["]*/kern\.module_path="\1;'${ESC_PREFIX}'\/modules"/g' ${SYSCTL_CONFIG} - fi -else - # Not present. - echo kern.module_path="${MODULE_PATH}" >> ${SYSCTL_CONFIG} -fi - - -kldstat -n fuse > /dev/null 2>&1; RESULT=$? -if [ ${RESULT} -eq 0 ]; then - kldunload -n fuse > /dev/null 2>&1; RESULT=$? - if [ ${RESULT} -ne 0 ]; then - echo 'NOTICE: Failed to unload the Fuse module!' - echo 'NOTICE: Is fuse.ko in use?' - fi -fi - -grep fusefs_enable ${LOADER_CONFIG} > /dev/null 2>&1; RESULT=$? -if [ ${RESULT} -eq 0 ]; then - # Present, we should leave it alone -# sed -e s/fusefs_enable.*/fuse_load=\"YES\"/g -i.orig ${LOADER_CONFIG} -else - # Not present. First time install, so lets start it up - echo 'fusefs_enable="YES"' >> ${LOADER_CONFIG} -fi - -kldload fuse > /dev/null 2>&1 ; RESULT=$? -if [ ${RESULT} -ne 0 ]; then - echo 'NOTICE: Failed to load the Fuse module!' - echo 'NOTICE: Unload and load Fuse module manually, or reboot.' -fi |