diff options
author | alepulver <alepulver@FreeBSD.org> | 2008-02-17 02:05:38 +0800 |
---|---|---|
committer | alepulver <alepulver@FreeBSD.org> | 2008-02-17 02:05:38 +0800 |
commit | f31c44925e62e4646ea12d04632bcfb7697d6719 (patch) | |
tree | 1be2dd276a1e5db0a1e6b506e033ec275d5a77e5 /sysutils/fusefs-kmod | |
parent | bf8691c1e94f226c8dd0440bebf691385b605695 (diff) | |
download | freebsd-ports-gnome-f31c44925e62e4646ea12d04632bcfb7697d6719.tar.gz freebsd-ports-gnome-f31c44925e62e4646ea12d04632bcfb7697d6719.tar.zst freebsd-ports-gnome-f31c44925e62e4646ea12d04632bcfb7697d6719.zip |
From [1]:
- Update to version 0.3.9-pre1.20080208 (agreed with author).
- Download directly from the Mercurial reposirory (as tarball), to ease
maintainence.
- Remove all local patches as they were integrated.
- Convert setup.sh into setup.sh.in, and use SUB_FILES instead of manual
replacement.
- Use kldload instead of rc.d script in setup.sh.in because the latter gives
an error.
- Remove "sleep 1" from rc.d script as now the FUSE daemon makes umount wait
until disks are synced (synchronous unmount).
- Update pkg-message.
From [2]:
- Pass SRC_BASE to the actual build (previously was only used by the port to
detect if the source was installed, but not passed to the internal Makefile).
PR: ports/120420 [1], ports/118112 [2]
Submitted by: alepulver [1], Yuri Pankov <yuri.pankov@gmail.com> [2]
Approved by: maintainer (timeout) [1], maintainer [2]
Diffstat (limited to 'sysutils/fusefs-kmod')
-rw-r--r-- | sysutils/fusefs-kmod/Makefile | 33 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/distinfo | 6 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/fusefs.in | 6 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/patch-fuse_io.c | 35 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/patch-fuse_module_Makefile | 18 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/patch-fuse_module_fuse.h | 36 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/patch-fuse_vfsops.c | 108 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/patch-fuse_vnops.c | 211 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/patch-mount_fusefs-mount_fusefs.c | 21 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/pkg-message.in | 5 | ||||
-rw-r--r-- | sysutils/fusefs-kmod/files/setup.sh.in (renamed from sysutils/fusefs-kmod/files/setup.sh) | 10 |
11 files changed, 30 insertions, 459 deletions
diff --git a/sysutils/fusefs-kmod/Makefile b/sysutils/fusefs-kmod/Makefile index 6772865b2af5..45f54ed54273 100644 --- a/sysutils/fusefs-kmod/Makefile +++ b/sysutils/fusefs-kmod/Makefile @@ -6,13 +6,12 @@ # PORTNAME= fusefs -DISTVERSION= 0.3.9-pre1 -PORTREVISION= 3 +DISTVERSION= 0.3.9-pre1.20080208 CATEGORIES= sysutils kld -MASTER_SITES= http://fuse4bsd.creo.hu/downloads/ \ - http://am-productions.biz/docs/ +MASTER_SITES= http://mercurial.creo.hu/repos/fuse4bsd-hg/index.cgi/archive/ PKGNAMESUFFIX= -kmod -DISTNAME= fuse4bsd-${DISTVERSION} +DISTNAME= ${HG_SHORTREV} +DIST_SUBDIR= fuse4bsd MAINTAINER= amistry@am-productions.biz COMMENT= Kernel module for fuse @@ -23,15 +22,17 @@ BUILD_DEPENDS= fusefs-libs>2.4.1:${PORTSDIR}/sysutils/fusefs-libs BUILD_DEPENDS+= deplate:${PORTSDIR}/textproc/ruby-deplate .endif -USE_BZIP2= yes -MAKE_ENV= BINDIR="${PREFIX}/sbin" MANDIR="${PREFIX}/man/man" +USE_RC_SUBR= fusefs +MAKE_ENV= BINDIR="${PREFIX}/sbin" MANDIR="${MANPREFIX}/man/man" \ + KMODDIR="${KMODDIR}" SYSDIR="${SRC_BASE}/sys" \ + MOUNT="${SRC_BASE}/sbin/mount" +WRKSRC= ${WRKDIR}/fuse4bsd-${HG_SHORTREV} +DISABLE_SIZE= yes SRC_BASE?= /usr/src KMODDIR= ${PREFIX}/modules -MAKE_ARGS= KMODDIR=${KMODDIR} -MODULE_PATH= `/sbin/sysctl -n kern.module_path`;${KMODDIR} -USE_RC_SUBR= fusefs SETUP= setup.sh +HG_SHORTREV= 498acaef33b0 MAN8= mount_fusefs.8 TXT_DOCS= doc.text @@ -66,8 +67,10 @@ IGNORE= requires the Kernel source to be installed. Set SRC_BASE if it is not i IGNORE= requires the userland sources to be installed. Set SRC_BASE if it is not in /usr/src .endif -.if !defined(WITH_AUTOSETUP) -SUB_FILES= pkg-message +.if defined(WITH_AUTOSETUP) +SUB_FILES+= ${SETUP} +.else +SUB_FILES+= pkg-message .endif post-patch: @@ -88,10 +91,8 @@ pre-install: post-install: @${LN} -fs ${PREFIX}/sbin/mount_fusefs /usr/sbin .if defined(WITH_AUTOSETUP) && !defined(PACKAGE_BUILDING) - @${SED} -e 's|@@PREFIX@@|${PREFIX}|g' \ - ${FILESDIR}/${SETUP} > ${WRKDIR}/${SETUP} - @${ECHO} "Modifying global startup config files and loading module..."; - ${SH} ${WRKDIR}/${SETUP} + @${ECHO} "Modifying global startup config files and loading module..." + @${SH} ${WRKDIR}/${SETUP} .else @${ECHO_CMD}; ${CAT} ${PKGMESSAGE}; ${ECHO_CMD} .endif diff --git a/sysutils/fusefs-kmod/distinfo b/sysutils/fusefs-kmod/distinfo index 68019685a8b7..b4a6282f7feb 100644 --- a/sysutils/fusefs-kmod/distinfo +++ b/sysutils/fusefs-kmod/distinfo @@ -1,3 +1,3 @@ -MD5 (fuse4bsd-0.3.9-pre1.tar.bz2) = d427d6c831794f6d62ce1aef9f254f9e -SHA256 (fuse4bsd-0.3.9-pre1.tar.bz2) = e339fce188b3667ca267f8d672d3f9657d61e384d54997a93d64ddd178fd55d7 -SIZE (fuse4bsd-0.3.9-pre1.tar.bz2) = 112627 +MD5 (fuse4bsd/498acaef33b0.tar.gz) = 9fd12d284be9450dae0ec5e718a5bc8e +SHA256 (fuse4bsd/498acaef33b0.tar.gz) = 70ec94c6700f6395316c68d60ba0307236b20cddd6aeeedd4597870e7670ff2a +SIZE (fuse4bsd/498acaef33b0.tar.gz) = 116037 diff --git a/sysutils/fusefs-kmod/files/fusefs.in b/sysutils/fusefs-kmod/files/fusefs.in index 62fd25827654..3b5d97afacbc 100644 --- a/sysutils/fusefs-kmod/files/fusefs.in +++ b/sysutils/fusefs-kmod/files/fusefs.in @@ -40,13 +40,13 @@ fusefs_stop() return 1 fi echo "Stopping ${name}." -# Unmount FUSE filesystems in reverse order (in case they are nested) with -# a delay of one second after, to allow 'umount' finish. +# Unmount FUSE filesystems in reverse order (in case they are nested) to +# allow recent FUSE implementation to synchronize disks before shutdown. mount | sed -e '1!G;h;$!d' | while read dev d1 mountpoint d2; do case "$dev" in /dev/fuse[0-9]*) echo "fusefs: unmounting ${mountpoint}." - umount $mountpoint ; sleep 1 + umount $mountpoint ;; esac done diff --git a/sysutils/fusefs-kmod/files/patch-fuse_io.c b/sysutils/fusefs-kmod/files/patch-fuse_io.c deleted file mode 100644 index 11797d848847..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_io.c +++ /dev/null @@ -1,35 +0,0 @@ ---- fuse_module/fuse_io.c.orig 2007-06-19 16:35:22.000000000 +0400 -+++ fuse_module/fuse_io.c 2008-01-20 20:47:05.000000000 +0300 -@@ -139,7 +139,11 @@ - struct vnode *vp = fp->f_vnode; - int err = 0; - -+#if __FreeBSD_version > 800009 -+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); -+#else - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); -+#endif - - ASSERT_VOP_LOCKED__FH(vp); - if (_file_is_bad(fp) || ! _file_is_fat(fp)) { -@@ -148,7 +152,7 @@ - } - - if (uio->uio_resid == 0) -- return (0); -+ goto out; - - if (uio->uio_rw == UIO_WRITE && fp->f_flag & O_APPEND) { - if ((err = VOP_GETATTR(vp, &va, cred, td))) -@@ -166,7 +170,11 @@ - fp->f_nextoff = uio->uio_offset; - - out: -+#if __FreeBSD_version > 800009 -+ VOP_UNLOCK(vp, 0); -+#else - VOP_UNLOCK(vp, 0, td); -+#endif - - DEBUG("leaving with %d\n", err); - return (err); 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 4da86f55b6dc..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module_Makefile +++ /dev/null @@ -1,18 +0,0 @@ ---- fuse_module/Makefile.orig 2007-06-19 14:35:22.000000000 +0200 -+++ fuse_module/Makefile 2007-08-16 18:31:50.000000000 +0200 -@@ -21,7 +21,14 @@ - .endif - - .if defined(KERNCONF) --KERNCONFDIR= /usr/obj/usr/src/sys/${KERNCONF} -+.if !defined(MAKEOBJDIRPREFIX) -+MAKEOBJDIRPREFIX=/usr/obj -+.endif -+.if !defined(SRC_BASE) -+SRC_BASE=/usr/src -+.endif -+KERNCONF1!= echo ${KERNCONF} | sed -e 's/ .*//g' -+KERNCONFDIR= ${MAKEOBJDIRPREFIX}${SRC_BASE}/sys/${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 75257347f9ef..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_module_fuse.h +++ /dev/null @@ -1,36 +0,0 @@ ---- fuse_module/fuse.h.orig Tue Jun 19 14:35:22 2007 -+++ fuse_module/fuse.h Sat Jul 14 13:23:37 2007 -@@ -33,6 +33,24 @@ - #endif - #endif - -+#ifndef USE_PRIVILEGE_API -+/* -+ * __FreeBSD_version bump was omitted for introduction of -+ * the privilege API (both when it's been added and when the -+ * legacy API has been removed), so here we just use the first -+ * value of __FreeBSD_version after adding the priv stuff. -+ */ -+#if __FreeBSD_version >= 700025 -+#define USE_PRIVILEGE_API 1 -+#else -+#define USE_PRIVILEGE_API 0 -+#endif -+#endif -+#if ! USE_PRIVILEGE_API -+#define priv_check(td, priv) suser(td) -+#define priv_check_cred(cred, priv, flag) suser_cred(cred, SUSER_ALLOWJAIL) -+#endif -+ - /* - * Appearance of new FUSE operations is not always in par with version - * numbering... At least, 7.3 is a sufficient condition for having -@@ -210,7 +228,7 @@ - void fprettyprint(struct fuse_iov *fiov, size_t dlen); - #endif - --#if _DEBUG || _DEBUG2G || _DEBUG3G || defined(INVARIANTS) -+#if _DEBUG || _DEBUG2G || _DEBUG3G || defined(INVARIANTS) || FUSELIB_CONFORM_BIOREAD - int isbzero(void *buf, size_t len); - #endif - diff --git a/sysutils/fusefs-kmod/files/patch-fuse_vfsops.c b/sysutils/fusefs-kmod/files/patch-fuse_vfsops.c deleted file mode 100644 index 194a910effbc..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_vfsops.c +++ /dev/null @@ -1,108 +0,0 @@ ---- fuse_module/fuse_vfsops.c.orig 2007-06-19 16:35:22.000000000 +0400 -+++ fuse_module/fuse_vfsops.c 2008-01-20 20:39:38.000000000 +0300 -@@ -23,6 +23,18 @@ - #include "fuse_session.h" - #include "fuse_vnode.h" - -+#if USE_PRIVILEGE_API -+#include <sys/priv.h> -+#endif -+ -+/* This will do for privilege types for now */ -+#ifndef PRIV_VFS_FUSE_ALLOWOTHER -+#define PRIV_VFS_FUSE_ALLOWOTHER PRIV_VFS_MOUNT_NONUSER -+#endif -+#ifndef PRIV_VFS_FUSE_MOUNT_NONUSER -+#define PRIV_VFS_FUSE_MOUNT_NONUSER PRIV_VFS_MOUNT_NONUSER -+#endif -+ - static int fuse_init_handler(struct fuse_ticket *tick, struct uio *uio); - static void fuse_send_init(struct fuse_data *data, struct thread *td); - static vfs_hash_cmp_t fuse_vnode_bgdrop_cmp; -@@ -207,10 +219,8 @@ - KASSERT(fuse_useco >= 0, - ("negative fuse usecount despite Giant")); - -- if (mp->mnt_flag & MNT_UPDATE) { -- uprintf("fuse: updating mounts is not supported\n"); -+ if (mp->mnt_flag & MNT_UPDATE) - return (EOPNOTSUPP); -- } - - mp->mnt_flag |= MNT_SYNCHRONOUS; - /* Get the new options passed to mount */ -@@ -293,10 +303,8 @@ - - if (fdata_kick_get(data)) - err = ENOTCONN; -- if (mntopts & FSESS_DAEMON_CAN_SPY && suser(td)) { -- uprintf("only root can use \"allow_other\"\n"); -- err = EPERM; -- } -+ if (mntopts & FSESS_DAEMON_CAN_SPY) -+ err = priv_check(td, PRIV_VFS_FUSE_ALLOWOTHER); - - slock = &data->mhierlock; - /* Note that sx_try_xlock returns 0 on _failure_ */ -@@ -334,10 +342,9 @@ - */ - err = EINVAL; - } else { -- if (suser(td) && -- td->td_ucred->cr_uid != data->daemoncred->cr_uid) -- /* we are not allowed to do the first mount */ -- err = EPERM; -+ if (td->td_ucred->cr_uid != data->daemoncred->cr_uid) -+ /* are we allowed to do the first mount? */ -+ err = priv_check(td, PRIV_VFS_FUSE_MOUNT_NONUSER); - } - - if (err) { -@@ -370,7 +377,11 @@ - - err = getnewvnode("fuse", mp, &fuse_vnops, &rvp); - if (! err) { -+#if __FreeBSD_version > 800009 -+ err = vn_lock(rvp, LK_EXCLUSIVE | LK_RETRY); -+#else - err = vn_lock(rvp, LK_EXCLUSIVE | LK_RETRY, td); -+#endif - #if NEW_VNODES_ADJUSTED_MANUALLY - if (err) - printf("fuse4bsd: leaking vnode %p\n", rvp); -@@ -398,7 +409,11 @@ - free(fvdat, M_FUSEVN); - goto out; - } else -+#if __FreeBSD_version > 800009 -+ VOP_UNLOCK(rvp, 0); -+#else - VOP_UNLOCK(rvp, 0, td); -+#endif - - data->mp = mp; - data->mpri = FM_PRIMARY; -@@ -582,7 +597,11 @@ - - vp = data->rvp; - vref(vp); -+#if __FreeBSD_version > 800009 -+ vn_lock(vp, flags | LK_RETRY); -+#else - vn_lock(vp, flags | LK_RETRY, td); -+#endif - if (vp->v_type == VNON) { - struct vattr va; - -@@ -808,7 +827,11 @@ - } - - #if NEW_VNODES_ADJUSTED_MANUALLY -+#if __FreeBSD_version > 800009 -+ err = vn_lock(*vpp, myflags); -+#else - err = vn_lock(*vpp, myflags, td); -+#endif - if (err) - printf("fuse4bsd: leaking vnode %p\n", *vpp); - else diff --git a/sysutils/fusefs-kmod/files/patch-fuse_vnops.c b/sysutils/fusefs-kmod/files/patch-fuse_vnops.c deleted file mode 100644 index 905630bcb351..000000000000 --- a/sysutils/fusefs-kmod/files/patch-fuse_vnops.c +++ /dev/null @@ -1,211 +0,0 @@ ---- fuse_module/fuse_vnops.c.orig 2007-06-19 16:35:22.000000000 +0400 -+++ fuse_module/fuse_vnops.c 2008-01-20 20:45:28.000000000 +0300 -@@ -42,6 +42,10 @@ - #include "fuse_vnode.h" - #include "fuse_io.h" - -+#if USE_PRIVILEGE_API -+#include <sys/priv.h> -+#endif -+ - /* function prototype for iterators over filehandles (of a vp) */ - typedef int fuse_metrics_t(struct vnode *vp, struct thread *td, - struct ucred *cred, struct fuse_filehandle *fufh, -@@ -63,7 +67,9 @@ - #define FACCESS_CHOWN 0x08 /* do permission check for owner changing */ - #define FACCESS_NOCHECKSPY 0x10 /* don't check if daemon is allowed to spy on - user */ --#define FACCESS_XQUERIES FACCESS_STICKY | FACCESS_CHOWN -+#define FACCESS_SETGID 0x12 /* do permission check for setting setgid flag */ -+ -+#define FACCESS_XQUERIES FACCESS_STICKY | FACCESS_CHOWN | FACCESS_SETGID - - #define FVP_ACCESS_NOOP 0x01 /* vnode based control flag for doing access check */ - -@@ -855,6 +861,7 @@ - - /* - * Attribute caching hasn't yet been implemented. -+ * [... Update: it _has been_ implemented.] - * However, within one function we don't wanna query attributes - * several times. Now it's enough pull the attributes once, and throw - * it into the following routine with various modes. -@@ -929,12 +936,16 @@ - mode == VWRITE) { - if (cred->cr_uid != facp->xuid && - cred->cr_uid != VTOVA(vp)->va_uid) -- err = suser_cred(cred, SUSER_ALLOWJAIL); -+ err = priv_check_cred(cred, -+ PRIV_VFS_ADMIN, -+ 0); - } - /* - * We return here because this flags is exlusive - * with the others - */ -+ KASSERT(facp->facc_flags == FACCESS_STICKY, -+ ("sticky access check comes in mixed")); - return (err); - } - -@@ -947,10 +958,21 @@ - (cred->cr_gid != facp->xgid && - facp->xgid != (gid_t)VNOVAL && - ! groupmember(facp->xgid, cred))) -- err = suser_cred(cred, SUSER_ALLOWJAIL); -- return (err); -+ err = priv_check_cred(cred, PRIV_VFS_CHOWN, 0); -+ if (err) -+ return (err); - } - -+ if (facp->facc_flags & FACCESS_SETGID) { -+ gid_t sgid = facp->xgid; -+ -+ if (sgid == (gid_t)VNOVAL) -+ sgid = VTOVA(vp)->va_gid; -+ -+ if (! groupmember(sgid, cred)) -+ err = priv_check_cred(cred, PRIV_VFS_SETGID, 0); -+ return (err); -+ } - - } else { - #if FUSE_HAS_ACCESS -@@ -1234,7 +1256,13 @@ - */ - if (nameiop == RENAME && wantparent && islastcn) { - DEBUG("something to rename...\n"); -- if ((err = fuse_access_i(dvp, VWRITE, cred, td, &facp))) -+ -+ facp.xuid = fattr->uid; -+ facp.facc_flags |= FACCESS_STICKY; -+ err = fuse_access_i(dvp, VWRITE, cred, td, &facp); -+ facp.facc_flags &= ~FACCESS_XQUERIES; -+ -+ if (err) - goto out; - - /* -@@ -1270,12 +1298,20 @@ - * If doing dotdot, we unlock dvp for vget time - * to conform lock order regulations. - */ -+#if __FreeBSD_version > 800009 -+ VOP_UNLOCK(dvp, 0); -+#else - VOP_UNLOCK(dvp, 0, td); -+#endif - err = fuse_vget_i(dvp->v_mount, td, nid, - IFTOVT(fattr->mode), &vp, VG_NORMAL, - parentid); - if (flags & ISDOTDOT) -+#if __FreeBSD_version > 800009 -+ vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); -+#else - vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td); -+#endif - if (err) - goto out; - *vpp = vp; -@@ -1540,7 +1576,11 @@ - cache_attrs(vp, feo); - - try_insert: -+#if __FreeBSD_version > 800009 -+ VOP_UNLOCK(vp, 0); -+#else - VOP_UNLOCK(vp, 0, td); -+#endif - /* - * We can't let the vnode being vput() here, the caller wants - * that do by herself. -@@ -1555,7 +1595,11 @@ - - #if NEW_VNODES_ADJUSTED_MANUALLY - if (! err) { -+#if __FreeBSD_version > 800009 -+ err = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); -+#else - err = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); -+#endif - if (err) - printf("fuse4bsd: leaking vnode %p\n", vp); - else { -@@ -1928,7 +1972,11 @@ - if (! _file_is_fat(fp)) - panic("non-fat file passed to close routine"); - -+#if __FreeBSD_version > 800009 -+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); -+#else - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); -+#endif - - if (_file_is_bad(fp)) { - DEBUG2G("fp %p, vnode #%llu: went bad, giving up\n", -@@ -2371,8 +2419,11 @@ - */ - if ((err = getnewvnode("fuse", dvp->v_mount, &fuse_vnops, vpp))) - return (err); -- -+#if __FreeBSD_version > 800009 -+ if ((err = vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY))) { -+#else - if ((err = vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY, curthread))) { -+#endif - #if NEW_VNODES_ADJUSTED_MANUALLY - printf("fuse4bsd: leaking vnode %p\n", *vpp); - #endif -@@ -2719,7 +2770,11 @@ - * No LK_RETRY. See discussion in thread - * http://thread.gmane.org/gmane.os.dragonfly-bsd.kernel/8952/focus=8964 - */ -+#if __FreeBSD_version > 800009 -+ err = vn_lock(fvp, LK_EXCLUSIVE); -+#else - err = vn_lock(fvp, LK_EXCLUSIVE, td); -+#endif - if (err) - goto out; - -@@ -2730,7 +2785,11 @@ - if ((fcnp->cn_namelen == 1 && fcnp->cn_nameptr[0] == '.') - || fdvp == fvp - || ((fcnp->cn_flags | tcnp->cn_flags) & ISDOTDOT)) { -+#if __FreeBSD_version > 800009 -+ VOP_UNLOCK(fvp, 0); -+#else - VOP_UNLOCK(fvp, 0, td); -+#endif - err = EINVAL; - goto out; - } -@@ -2748,7 +2807,11 @@ - */ - err = fuse_access_i(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_thread, &facp); - fnid = VTOI(fvp); -+#if __FreeBSD_version > 800009 -+ VOP_UNLOCK(fvp, 0); -+#else - VOP_UNLOCK(fvp, 0, td); -+#endif - if (err) - goto out; - -@@ -2948,8 +3011,14 @@ - } - - if (vap->va_mode != (mode_t)VNOVAL) { -+#if _DEBUG - if (vap->va_mode & S_IFMT) -- DEBUG("fuse_setattr -- weird: format bits in mode field, 0%o\n", vap->va_mode); -+ DEBUG("fuse_setattr -- weird: " -+ "format bits in mode field, 0%o\n", -+ vap->va_mode); -+#endif -+ if (vap->va_mode & S_ISGID) -+ facp.facc_flags |= FACCESS_SETGID; - fsai->FUSEATTR(mode) = vap->va_mode & ALLPERMS; - fsai->valid |= FATTR_MODE; - } 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 dad69c8ea9b0..000000000000 --- a/sysutils/fusefs-kmod/files/patch-mount_fusefs-mount_fusefs.c +++ /dev/null @@ -1,21 +0,0 @@ ---- mount_fusefs/mount_fusefs.c.orig Tue Jun 19 09:35:22 2007 -+++ mount_fusefs/mount_fusefs.c Thu Dec 13 02:44:12 2007 -@@ -70,6 +70,8 @@ - { "user_id=", 0, 0x00, 1 }, - { "group_id=", 0, 0x00, 1 }, - { "large_read", 0, 0x00, 1 }, -+ /* "nonempty", just the first two chars are stripped off during parsing */ -+ { "nempty", 0, 0x00, 1 }, - MOPT_STDOPTS, - MOPT_END - }; -@@ -469,7 +471,8 @@ - int - init_backgrounded(void) - { -- int ibg, len; -+ int ibg; -+ size_t len; - - len = sizeof(ibg); - diff --git a/sysutils/fusefs-kmod/files/pkg-message.in b/sysutils/fusefs-kmod/files/pkg-message.in index 81b4143ab9e7..1d40884834ab 100644 --- a/sysutils/fusefs-kmod/files/pkg-message.in +++ b/sysutils/fusefs-kmod/files/pkg-message.in @@ -13,8 +13,7 @@ Now fuse filesystems (sysutils/fusefs-*) can be mounted at startup from named "mount_<fstype>", which is not created by all the fusefs ports. Note that the rc.d script will unmount all fuse filesystems when called with -"stop", so it can unload the kernel module, and as a temporary workaround to -flush cache in drivers like NTFS-3G (sysutils/fusefs-ntfs) at shutdown (until -a proper solution is implemented). +"stop" (in reverse order in case of nested mounts), so it can unload the +kernel module. ============================================================================== diff --git a/sysutils/fusefs-kmod/files/setup.sh b/sysutils/fusefs-kmod/files/setup.sh.in index eb7c403fcc70..99a873fccde5 100644 --- a/sysutils/fusefs-kmod/files/setup.sh +++ b/sysutils/fusefs-kmod/files/setup.sh.in @@ -4,9 +4,9 @@ SYSCTL_CONFIG=/etc/sysctl.conf LOADER_CONFIG=/etc/rc.conf -sysctl kern.module_path | grep "[:space:;=]@@PREFIX@@/modules[;]\?\b" > /dev/null 2>&1; RESULT=$? +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" + MODULE_PATH="`sysctl -n kern.module_path`;%%PREFIX%%/modules" sysctl "kern.module_path=${MODULE_PATH}" else MODULE_PATH=`sysctl -n kern.module_path` @@ -15,10 +15,10 @@ 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=$? + 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'` + 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 @@ -45,7 +45,7 @@ else echo 'fusefs_enable="YES"' >> ${LOADER_CONFIG} fi -@@PREFIX@@/etc/rc.d/fusefs start > /dev/null 2>&1 ; RESULT=$? +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.' |