commit r191990 seems to break fusefs-kmod

Jung-uk Kim jkim at FreeBSD.org
Wed May 13 23:27:32 UTC 2009


On Thursday 14 May 2009 05:39 pm, Gustau Pérez wrote:
>   Hi,
>
>   commit r191990 seems to break fusefs-kmod. When recompiling the
> port the error I get is :
>
>         fuse_vfsops.c:218: error: conflicting types for
> 'fuse_mount' fuse_vfsops.c:51: error: previous declaration of
> 'fuse_mount' was here
>         fuse_vfsops.c:534: error: conflicting types for
> 'fuse_unmount' fuse_vfsops.c:52: error: previous declaration of
> 'fuse_unmount' was here
>         fuse_vfsops.c:638: error: conflicting types for 'fuse_root'
>         fuse_vfsops.c:53: error: previous declaration of
> 'fuse_root' was here
>         fuse_vfsops.c:687: error: conflicting types for
> 'fuse_statfs' fuse_vfsops.c:54: error: previous declaration of
> 'fuse_statfs' was here
>         fuse_vfsops.c:802:38: error: macro "VFS_ROOT" passed 4
> arguments, but takes just 3
>         fuse_vfsops.c: In function 'fuse_vget_i':
>         fuse_vfsops.c:802: error: 'VFS_ROOT' undeclared (first use
> in this function)
>         fuse_vfsops.c:802: error: (Each undeclared identifier is
> reported only once
>         fuse_vfsops.c:802: error: for each function it appears in.)
>         *** Error code 1
>
>   I'm CC port maintainer because I have the feeling this is the
> desired behavior.

Try the attached patch.

Jung-uk Kim
-------------- next part --------------
--- sysutils/fusefs-kmod/files/patch-fuse_module__fuse.h	30 Oct 2008 15:36:35 -0000	1.2
+++ sysutils/fusefs-kmod/files/patch-fuse_module__fuse.h	13 May 2009 23:25:13 -0000
@@ -1,9 +1,17 @@
 --- fuse_module/fuse.h.orig	2008-02-05 00:25:57.000000000 -0500
-+++ fuse_module/fuse.h	2008-10-29 19:18:43.000000000 -0400
-@@ -25,6 +25,14 @@
++++ 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
@@ -15,7 +23,7 @@
  #ifndef VOP_OPEN_TAKES_FP
  #if __FreeBSD_version >= 700044
  #define VOP_OPEN_TAKES_FP 1
-@@ -49,6 +57,14 @@
+@@ -49,6 +65,14 @@
  #endif
  #endif
  
--- sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vfsops.c	26 Sep 2008 18:26:35 -0000	1.2
+++ sysutils/fusefs-kmod/files/patch-fuse_module__fuse_vfsops.c	13 May 2009 23:25:13 -0000
@@ -1,5 +1,5 @@
 --- fuse_module/fuse_vfsops.c.orig	2008-02-05 00:25:57.000000000 -0500
-+++ fuse_module/fuse_vfsops.c	2008-09-26 12:53:33.000000000 -0400
++++ 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>
@@ -8,7 +8,65 @@
  
  #include "fuse.h"
  #include "fuse_session.h"
-@@ -667,7 +668,11 @@
+@@ -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;
  
@@ -21,3 +79,44 @@
  	}
  	*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"));


More information about the freebsd-current mailing list