Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Jul 2006 14:57:17 -0400
From:      "Anish Mistry" <amistry@am-productions.biz>
To:        "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org>
Subject:   ports/100403: Fix sysutils/fusefs-kmod build on CURRENT
Message-ID:  <1153076237.60156@bigguy.am-productions.biz>
Resent-Message-ID: <200607161900.k6GJ0WLE081114@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         100403
>Category:       ports
>Synopsis:       Fix sysutils/fusefs-kmod build on CURRENT
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jul 16 19:00:31 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Anish Mistry
>Release:        FreeBSD 6.1-RELEASE-p1 i386
>Organization:
AM Productions 
>Environment:


System: FreeBSD 6.1-RELEASE-p1 #0: Thu Jun  1 21:16:20 EDT 2006
    amistry@bigguy.am-productions.biz:/usr/obj/usr/src/sys/BIGGUY



>Description:


Fix the build on CURRENT.  The #if/#ifdef usage was not correct.  Since there won't be another release for at least the next few weeks, roll in a locking fix for the .. lookup.


>How-To-Repeat:





>Fix:


--- fusefs-kmod-buildfix.patch begins here ---
diff -ruN fusefs-kmod.orig/Makefile fusefs-kmod/Makefile
--- fusefs-kmod.orig/Makefile	Sun Jul 16 13:50:35 2006
+++ fusefs-kmod/Makefile	Sun Jul 16 14:29:10 2006
@@ -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 -ruN fusefs-kmod.orig/files/patch-fuse_module_fmaster.c fusefs-kmod/files/patch-fuse_module_fmaster.c
--- fusefs-kmod.orig/files/patch-fuse_module_fmaster.c	Wed Dec 31 19:00:00 1969
+++ fusefs-kmod/files/patch-fuse_module_fmaster.c	Sun Jul 16 14:11:42 2006
@@ -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 -ruN fusefs-kmod.orig/files/patch-fuse_module_fuse.c fusefs-kmod/files/patch-fuse_module_fuse.c
--- fusefs-kmod.orig/files/patch-fuse_module_fuse.c	Wed Dec 31 19:00:00 1969
+++ fusefs-kmod/files/patch-fuse_module_fuse.c	Sun Jul 16 14:47:00 2006
@@ -0,0 +1,310 @@
+--- 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;
diff -ruN fusefs-kmod.orig/files/patch-fuse_module_fuse.h fusefs-kmod/files/patch-fuse_module_fuse.h
--- fusefs-kmod.orig/files/patch-fuse_module_fuse.h	Wed Dec 31 19:00:00 1969
+++ fusefs-kmod/files/patch-fuse_module_fuse.h	Sun Jul 16 14:47:00 2006
@@ -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
+ 
--- fusefs-kmod-buildfix.patch ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1153076237.60156>