Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Sep 2005 14:35:39 GMT
From:      soc-chenk <soc-chenk@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 84554 for review
Message-ID:  <200509301435.j8UEZdSg053892@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=84554

Change 84554 by soc-chenk@soc-chenk_leavemealone on 2005/09/30 14:34:56

	update kernel api and userspace (rename pending)
	Submitted by:	soc-chenk

Affected files ...

.. //depot/projects/soc2005/fuse4bsd2/Changelog#12 edit
.. //depot/projects/soc2005/fuse4bsd2/IMPLEMENTATION_NOTES#8 edit
.. //depot/projects/soc2005/fuse4bsd2/README.html#7 edit
.. //depot/projects/soc2005/fuse4bsd2/fuse_module/Makefile-5.4#2 delete
.. //depot/projects/soc2005/fuse4bsd2/fuse_module/fuse.c#10 edit
.. //depot/projects/soc2005/fuse4bsd2/fuselib/fuselib-2.4.0-pre2.diff#3 edit

Differences ...

==== //depot/projects/soc2005/fuse4bsd2/Changelog#12 (text+ko) ====

@@ -1,3 +1,13 @@
+Fri Sep 30 15:23:08 CEST 2005  at node: creo.hu, nick: csaba
+  * update kernel api and userspace
+    - userspace patch updated to 2.4.0-rc1
+    - bug in FreeBSD's mknod of example filesystems fixed
+    - module adjusted to new clone event handler API
+    - README.html updated to reflect above changes and
+      more info on access control was added
+    - Info on access control in IMPLEMENTATION_NOTES made
+      more exact
+
 Wed Sep 21 20:05:27 CEST 2005  at node: creo.hu, nick: csaba
   tagged 0.2.11
 

==== //depot/projects/soc2005/fuse4bsd2/IMPLEMENTATION_NOTES#8 (text+ko) ====

@@ -200,35 +200,35 @@
 denying access to the device for everyone else than root makes no
 problem.
 
-However, in FreeBSD daemons or the mount utilily open fuse
-devices directly, and no setuid dispatcher is present, so here it's a
-valid question: who should be able to use fuse devices?
+However, in FreeBSD daemons or the mount utilily open fuse devices
+directly, and no setuid dispatcher is present, so here it is a valid
+question: who should be able to use fuse devices?
+
+In FreeBSD, mount access is controlled by two mechanisms. One is the 
+above mentioned vfs.usermount sysctl. The other comes into play if
+the filesystem is backed by a device. In that case, only those can mount
+the filesystem who have read/write access to the device to be mounted
+(or read access for a read only mount).
+
+Both of these regard to Fuse, too: despite its somewhat synthetic
+charater, Fuse is a device backed filesystem. There is though one subtle
+difference between Fuse and traditonal device (disk) backed filesystems
+in this respect: with traditional filesystems, permissions of the device
+are used also for providing access control for the device file as such,
+which is a valid entity on its own and can be used for performing raw I/O
+on the appropriate hardware.
 
-In fact, mounting privileges (as discussed above) is the real beef --
-the device files themselves don't need special protection (I guess, in
-Linux neither, the root-only access policy is established only on a
-"it's better to show up as one who prefers to play on the safe side"
-base). The kernel is not willing to interact with a reader/writer of the
-file until the VFS layer pushes messages onto it, which doesn't happen
-until the device file gets mounted. As it seems to be a bad idea to
-introduce non-orthogonal access policies in parallell, we tend to be
-liberal in respect of fuse devices. Yet we also have to make our
-commitment to the "it's better to show up as one who prefers to play on
-the safe side" idea.
+On the contrary, fuse devices has no use without being mounted (the
+kernel is not willing to interact with a reader/writer of the device
+file until the VFS layer pushes messages onto it). Hence permission
+settings of fuse devices are to be directly interpreted as permissions
+for mounting Fuse filesystems. So this is the tool by which a
+fine-grained control on mounting Fuse filesystems can be set up.
 
-As a compromise, fuse devices are set to be readable/writable for
-members of the operator group (the same group which is usually used for
-controlling access to devices like sound cards ands optical drives). One
-might argue that it's nonsense that mounting a Fuse filesystem is harder
-than mounting a traditional, disk based file system, as the latter
-requires only vfs.usermount == 1, while the former requires membership
-in operator, too. Well, the conscious admin who takes the effort to set
-vfs.usermount to 1, can as well take the effort to adjust devfs(8) rules
-so that fuse devices become world usable
-("devfs rule add path 'fuse*' mode 666"). Hey, conscious admins,
-hear my word, I hereby claim thou shalt not fear to do so. And,
-concerning paranoiac admins, these defaults save them from a heart
-attack upon seeing world writable entries under /dev.
+By default, fuse devices can be used by members of the operator group
+(that's used for controlling access to, eg., usb devices). One can set
+permissions of fuse devives directly, by chmod, or generally, via
+devfs(8) rules.
 
 * 1c -- dealing with the "allow other" misery
 

==== //depot/projects/soc2005/fuse4bsd2/README.html#7 (text+ko) ====

@@ -32,7 +32,7 @@
 The main part of Fuse for FreeBSD is a kernel module which provides a kernel messaging interface to the Fuse library in userspace which is compatible with that of the Linux module. The userspace part is pretty portable. A lightweight patch is enough to get that compile and work. 
 </p>
 <p>
-The module was written for and tested with CURRENT, aka FreeBSD-7.0. I'd guess it will work fine with RELENG 6 too, but currently it's not usable with 5.x (or lower) versions. 
+The module was written for and tested with CURRENT, aka FreeBSD-7.0. I'd guess it will work fine with RELENG 6 too, but currently it's not usable with 5.x (or lower) versions. The module will work with 7.0-CURRENT snapshots from not earlier than 8th of August and RELENG_6 snapshots from not earlier than 13th of August (desperate types can try with older CURRENT/RELENG_6 snapshots if they set the <tt>-DUSE_OLD_CLONEHANDLER_API</tt> flag for <tt>cc</tt>). 
 </p>
 <p>
 What can be considered as a public homepage for the project is  <a class="external" href="http://wikitest.freebsd.org/moin.cgi/FuseFilesystem"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">http://wikitest.freebsd.org/moin.cgi/FuseFilesystem</a>; for updates, further info go there. Get in contact with me via the <tt>soc-chenk</tt> email addrees of the FreeBSD organization (<tt>freebsd.org</tt>). 
@@ -50,18 +50,18 @@
 
     <li>
 <p>
- Fuse itself. Get Fuse 2.4.0-pre2 from their <a class="external" href="http://sourceforge.net/projects/fuse"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">Sourceforge project page</a>. 
+ Fuse itself. Get Fuse 2.4.0-rc1 from their <a class="external" href="http://sourceforge.net/projects/fuse"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">Sourceforge project page</a>. If this is not availabe  there (because a newer (pre)release has taken its place), you can either try to adopt these instructions to the newer (pre)release, or  fetch it from my download directory, <a class="external" href="http://creo.hu/~csaba/projects/fuse4bsd/downloads/"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">http://creo.hu/~csaba/projects/fuse4bsd/downloads/</a>. 
 </p>
 </li>
     <li>
 <p>
- The FreeBSD module. Source tarballs are provided at <a class="external" href="http://creo.hu/~csaba/projects/fuse4bsd/downloads/"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">http://creo.hu/~csaba/projects/fuse4bsd/downloads/</a>;  under the name <tt>fuse4bsd-</tt><em>&lt;version&gt;</em><tt>.tar.*</tt> (latest release is <strong>0.2.11</strong>, date of release: <strong>21th Sep 2005</strong>).  The current code is available via Darcs, you can fetch it by  
+ The FreeBSD module. Source tarballs are provided at <a class="external" href="http://creo.hu/~csaba/projects/fuse4bsd/downloads/"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">http://creo.hu/~csaba/projects/fuse4bsd/downloads/</a>;  under the name <tt>fuse4bsd-</tt><em>&lt;version&gt;</em><tt>.tar.*</tt> (latest release is <strong>0.2.11</strong>, date of release: <strong>21th Sep 2005</strong>).  The current code is available via <a class="external" href="http://www.freshports.org/devel/darcs"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">Darcs</a>, you can fetch it by  
 <pre> darcs get http://creo.hu/~csaba/darcs-repos/fuse4bsd</pre>; command, or via  <a class="external" href="http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=/depot/projects/soc2005/fuse4bsd2"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">Perforce</a>  (you can use this latter link for online source code browsing). 
 </p>
 </li>
     <li>
 <p>
- Fuse sshfs. The latest release (1.2) will do, fetch the sshfs-fuse package also from the  <a class="external" href="http://sourceforge.net/projects/fuse"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">Fuse SF project page</a>. 
+ Fuse sshfs. The latest release (1.2 as of writing this) should do, fetch the sshfs-fuse package also from the  <a class="external" href="http://sourceforge.net/projects/fuse"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">Fuse SF project page</a>. 
 </p>
 </li>
 
@@ -82,7 +82,7 @@
 </li>
     <li>
 <p>
- Type <tt>make</tt>. If you want normal quantity of debug output, use <tt>DEBUG2G=1</tt>, if you want tons of debug output,  use <tt>DEBUG=1</tt>. 
+ Type <tt>make</tt>. If you want normal quantity of debug output, use the make flag <tt>-DDEBUG2G</tt>, if you want tons of debug output,  use <tt>-DDEBUG</tt>. 
 </p>
 </li>
 
@@ -98,7 +98,7 @@
     <li>
 <p>
  Apply the patch with 
-<pre> patch -Np1 &lt; ../fuse4bsd/fuselib/fuselib-2.4.0-pre2.diff</pre>
+<pre> patch -Np1 &lt; ../fuse4bsd/fuselib/fuselib-2.4.0-rc1.diff</pre>
 </p>
 </li>
     <li>
@@ -110,13 +110,20 @@
 </li>
     <li>
 <p>
- We will do a non-privileged install (I'd say that's easier than set up a jail), I'll use  <tt>~/meta/fuse-2.4.0-pre2</tt> as the prefix.  Type the following commands:   
+ We will do a non-privileged install (I'd say that's easier than set up a jail), I'll use  <tt>~/meta/fuse-2.4.0-rc1</tt> as the prefix.  Type the following commands:   
 <pre> mkdir junk &amp;&amp;
- ./configure --prefix=$HOME/meta/fuse-2.4.0-pre2 --bindir=`pwd`/junk --disable-kernel-module MOUNT_FUSE_PATH=`pwd`/junk &amp;&amp;
- make &amp;&amp;
  ln -s /usr/bin/true junk/chown &amp;&amp;
  ln -s /usr/bin/true junk/mknod &amp;&amp;
- env PATH=`pwd`/junk:$PATH make install</pre>
+ echo '#!/bin/sh
+ echo "$1" | grep -q /etc/udev || /bin/mkdir "$@"' &gt; junk/mkdir &amp;&amp;
+ chmod a+x junk/mkdir &amp;&amp;
+ echo '#!/bin/sh
+ echo "$@" | grep -q udev || /usr/bin/install "$@"' &gt; junk/install &amp;&amp;
+ chmod a+x junk/install &amp;&amp;
+ (export PATH=`pwd`/junk:$PATH &amp;&amp;
+ ./configure --prefix=$HOME/meta/fuse-2.4.0-rc1 --bindir=`pwd`/junk --disable-kernel-module MOUNT_FUSE_PATH=`pwd`/junk &amp;&amp;
+ make &amp;&amp;
+ make install)</pre>
 </p>
 </li>
 
@@ -137,7 +144,7 @@
     <li>
 <p>
  Type   
-<pre> env PKG_CONFIG_PATH=~/meta/fuse-2.4.0-pre2/lib/pkgconfig/ ./configure &amp;&amp; make</pre>
+<pre> env PKG_CONFIG_PATH=~/meta/fuse-2.4.0-rc1/lib/pkgconfig/ ./configure &amp;&amp; make</pre>
 </p>
 </li>
 
@@ -149,18 +156,27 @@
 </p>
 <h4 id="head-601a98fa8a4a12123f319c97f1efaedb5013a642">Using the Fuse based ssh filesystem</h4>
 <p>
-In the following, you'll need to act as superuser, or enable the <tt>vfs.usermount</tt> sysctl. 
+Here we will show how to setup Fuse so that non-privileged users can use it, too. 
+</p>
+<p>
+As the superuser, do 
+<pre>kldload use_module/fuse.ko
+sysctl vfs.usermount=1</pre>
+</p>
+<p>
+Now you'll have to act as a user belonging to the <tt>operator</tt> group or you can as well delete all barriers by 
+<pre>devfs rule add path 'fuse*' mode 666</pre>(opening and doing I/O on fuse devices will have no effect until they get mounted). 
 </p>
 <p>
-First, of course, load <tt>fuse_module/fuse.ko</tt> (for this you definitely need to be a superuser). 
+Proceed on with the user you chose (we will assume you use the same user as the one who did the installation). 
 </p>
 <p>
-Then pick your favourite ssh accessible account (though maybe you'd better stick to servers running OpenSSH -- I've seen commits in sshfs' CVS for better interoperability with other servers, which show there might occur problems with them),  say, it's <tt>foo@bar.baz</tt>.  
+Pick your favourite ssh accessible account (though maybe you'd better stick to servers running OpenSSH -- I've seen commits in sshfs' CVS for better interoperability with other servers, which show there might occur problems with them),  say, it's <tt>foo@bar.baz</tt>.  
 </p>
 <p>
 Go to sshfs' directory. First prepare the mount: 
 <pre>mkdir -p ~/fuse &amp;&amp;
-export LD_LIBRARY_PATH=~/meta/fuse-2.4.0-pre2/lib/</pre>and also make sure that <tt>mount_fusefs</tt> (of FreeBSD Fuse) is in your path. Then do: 
+export LD_LIBRARY_PATH=~/meta/fuse-2.4.0-rc1/lib/</pre>and also make sure that <tt>mount_fusefs</tt> (of FreeBSD Fuse) is in your path. Then do: 
 <pre>mount_fusefs auto ~/fuse ./sshfs foo@bar.baz:</pre>
 </p>
 <p>
@@ -174,6 +190,10 @@
 <p>
 For more details, see the man page (<tt>mount_fusefs(8)</tt>). 
 </p>
+<h3 id="head-5f2cbd107037ed23248e5058a7a64cd6bae05468">Miscellaneous</h3>
+<p>
+You can get more info on Fuse based filesystems under FreeBSD at the Fuse wiki, <a class="external" href="http://fuse.sourceforge.net/wiki/index.php/FileSystemsOnFreeBSD"><img src="/classic/img/moin-www.png" alt="[WWW]" height="11" width="11">http://fuse.sourceforge.net/wiki/index.php/FileSystemsOnFreeBSD</a>. Feel encouraged to add your experiences. 
+</p>
 <h3 id="head-c8eea1b80ba437eb2c7d9d8e4a7a1c0c36ddce4e">Bugs</h3>
 <p>
 See the respective section of <tt>mount_fusefs(8)</tt>. 
@@ -184,11 +204,6 @@
 
     <li>
 <p>
- Backport to 5.x, if it can be done without a major rewrite 
-</p>
-</li>
-    <li>
-<p>
  Implement attr/name caching (with timeouts) 
 </p>
 </li>

==== //depot/projects/soc2005/fuse4bsd2/fuse_module/fuse.c#10 (text+ko) ====

@@ -90,7 +90,11 @@
 };
 
 
+#if 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);
+#endif
 static void			 fuse_bringdown(eventhandler_tag eh_tag);
 static int			 fuse_loader(struct module *m, int what, void *arg);
 
@@ -1521,11 +1525,7 @@
 /* static vfs_vget_t fuse_vget; */
 static int fuse_vget_i(struct mount *mp, struct thread *td, uint64_t nodeid, enum vtype vtyp, struct vnode **vpp);
 static __inline void fat2vat(struct mount *mp, struct fuse_attr *fat, struct vattr *vap);
-#if __FreeBSD_version >= 600000
 static vop_getattr_t fuse_getattr;
-#else
-static int fuse_getattr(struct vop_getattr_args *ap);
-#endif
 static __inline int fuse_recyc_backend(struct vnode *vp, struct thread *td);
 static fuse_metrics_t release_filehandle;
 static void fuse_filehandle_gc(struct vnode *vp, struct thread *td, struct ucred *cred);
@@ -1583,7 +1583,6 @@
 	   .vfs_sync    = vfs_stdsync, */
 };
 
-#if __FreeBSD_version >= 600000
 static struct vop_vector fuse_vnops = {
 	.vop_default       = &default_vnodeops,
 	.vop_inactive      = fuse_inactive,
@@ -1610,15 +1609,6 @@
 	.vop_bmap          = fuse_bmap,
 	.vop_print         = fuse_print,
 };
-#else
-vop_t **fuse_vnodeop_p;
-static struct vnodeopv_entry_desc fuse_vnops[] = {
-  { &vop_getattr_desc,      (vop_t *)fuse_getattr  },
-};
-static struct vnodeopv_desc fuse_vnodeop_opv_desc =
-  { &fuse_vnodeop_p, fuse_vnops };
-VNODEOP_SET(fuse_vnodeop_opv_desc);
-#endif
 
 static struct fileops fuse_fileops;
 
@@ -1857,11 +1847,7 @@
 	MALLOC(fvdat, struct fuse_vnode_data *, sizeof(*fvdat), M_FUSEFS,
 	       M_WAITOK | M_ZERO);
 
-#if __FreeBSD_version >= 600000
 	err = getnewvnode("fuse", mp, &fuse_vnops, &rvp);
-#else
-	err = getnewvnode("fuse", mp, fuse_vnodeop_p, &rvp);
-#endif
 
 	if (err) {
 		fdata_kick_set(data);
@@ -2034,12 +2020,7 @@
 
 /* stolen from portalfs */
 static int
-fuse_root(struct mount *mp,
-#if __FreeBSD_version >= 600000
-	  int flags,
-#endif
-	  struct vnode **vpp,
-	  struct thread *td)
+fuse_root(struct mount *mp, int flags, struct vnode **vpp, struct thread *td)
 {
 	/*
 	 * Return locked reference to root.
@@ -2162,11 +2143,7 @@
 
 	MALLOC(fvdat, struct fuse_vnode_data *, sizeof(*fvdat), M_FUSEFS,
 	       M_WAITOK | M_ZERO);
-#if __FreeBSD_version >= 600000
 	err = getnewvnode("fuse", mp, &fuse_vnops, vpp);
-#else
-	err = getnewvnode("fuse", mp, fuse_vnodeop_p, vpp);
-#endif
 #if _DEBUG
 	DEBUG2G("allocated new vnode:\n");
 	vn_printf(*vpp, " * ");
@@ -5154,8 +5131,14 @@
 
 /*   Modeled after tunclone() of net/if_tun.c
  */
+#if 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)
+#endif
 {
 	/*
 	 * Why cloning? We do need per-open info, but we could as well put our

==== //depot/projects/soc2005/fuse4bsd2/fuselib/fuselib-2.4.0-pre2.diff#3 (text+ko) ====

@@ -1,6 +1,6 @@
 diff -Naur linuxfuse/example/fusexmp.c bsdfuse/example/fusexmp.c
---- linuxfuse/example/fusexmp.c	Thu Apr  7 17:35:10 2005
-+++ bsdfuse/example/fusexmp.c	Tue Sep 13 16:47:54 2005
+--- linuxfuse/example/fusexmp.c	Tue Sep 13 21:26:12 2005
++++ bsdfuse/example/fusexmp.c	Fri Sep 30 11:34:16 2005
 @@ -20,7 +20,12 @@
  #include <fcntl.h>
  #include <dirent.h>
@@ -14,24 +14,27 @@
  #ifdef HAVE_SETXATTR
  #include <sys/xattr.h>
  #endif
-@@ -79,7 +84,13 @@
+@@ -79,7 +84,17 @@
  {
      int res;
  
--    res = mknod(path, mode, rdev);
++#ifndef __FreeBSD__
+     res = mknod(path, mode, rdev);
++#else
 +    if (rdev)
 +        res = mknod(path, mode, rdev);
 +    else if (mode & S_IFIFO)
 +        res = mkfifo(path, mode);
 +    else
-+        creat(path, mode);
++        res = open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
++#endif
 +
      if(res == -1)
          return -errno;
  
 diff -Naur linuxfuse/example/fusexmp_fh.c bsdfuse/example/fusexmp_fh.c
---- linuxfuse/example/fusexmp_fh.c	Thu Sep  8 17:16:48 2005
-+++ bsdfuse/example/fusexmp_fh.c	Tue Sep 13 16:47:55 2005
+--- linuxfuse/example/fusexmp_fh.c	Tue Sep 13 21:26:12 2005
++++ bsdfuse/example/fusexmp_fh.c	Fri Sep 30 11:34:00 2005
 @@ -17,7 +17,12 @@
  #include <fcntl.h>
  #include <dirent.h>
@@ -57,22 +60,25 @@
              break;
      }
  
-@@ -87,7 +96,13 @@
+@@ -87,7 +96,17 @@
  {
      int res;
  
--    res = mknod(path, mode, rdev);
++#ifndef __FreeBSD__
+     res = mknod(path, mode, rdev);
++#else
 +    if (rdev)
 +        res = mknod(path, mode, rdev);
 +    else if (mode & S_IFIFO)
 +        res = mkfifo(path, mode);
 +    else
-+        creat(path, mode);
++        res = open(path, O_CREAT | O_TRUNC | O_WRONLY, mode);
++#endif
 +
      if(res == -1)
          return -errno;
  
-@@ -268,9 +283,11 @@
+@@ -268,9 +287,11 @@
      int res;
      (void) path;
  
@@ -86,7 +92,7 @@
          return -errno;
 diff -Naur linuxfuse/include/fuse.h bsdfuse/include/fuse.h
 --- linuxfuse/include/fuse.h	Thu Sep  8 17:16:48 2005
-+++ bsdfuse/include/fuse.h	Tue Sep 13 16:47:55 2005
++++ bsdfuse/include/fuse.h	Fri Sep 30 11:29:31 2005
 @@ -20,7 +20,12 @@
  
  #include <sys/types.h>
@@ -101,8 +107,8 @@
  
  #ifdef __cplusplus
 diff -Naur linuxfuse/include/fuse_lowlevel.h bsdfuse/include/fuse_lowlevel.h
---- linuxfuse/include/fuse_lowlevel.h	Thu Sep  8 17:16:48 2005
-+++ bsdfuse/include/fuse_lowlevel.h	Tue Sep 13 16:47:55 2005
+--- linuxfuse/include/fuse_lowlevel.h	Thu Sep 15 13:26:16 2005
++++ bsdfuse/include/fuse_lowlevel.h	Fri Sep 30 11:29:31 2005
 @@ -18,7 +18,12 @@
  #include <utime.h>
  #include <sys/types.h>
@@ -118,7 +124,7 @@
  #ifdef __cplusplus
 diff -Naur linuxfuse/lib/fuse.c bsdfuse/lib/fuse.c
 --- linuxfuse/lib/fuse.c	Thu Sep  8 17:16:49 2005
-+++ bsdfuse/lib/fuse.c	Sat Sep 17 22:36:48 2005
++++ bsdfuse/lib/fuse.c	Fri Sep 30 11:29:31 2005
 @@ -1414,7 +1414,12 @@
  
  static int default_statfs(struct statfs *buf)
@@ -174,7 +180,7 @@
  
 diff -Naur linuxfuse/lib/fuse_lowlevel.c bsdfuse/lib/fuse_lowlevel.c
 --- linuxfuse/lib/fuse_lowlevel.c	Thu Sep  8 17:16:49 2005
-+++ bsdfuse/lib/fuse_lowlevel.c	Tue Sep 13 16:47:55 2005
++++ bsdfuse/lib/fuse_lowlevel.c	Fri Sep 30 11:29:31 2005
 @@ -194,7 +194,11 @@
      kstatfs->bavail	= stbuf->f_bavail;
      kstatfs->files	= stbuf->f_files;
@@ -201,7 +207,7 @@
               in->opcode != FUSE_WRITE && in->opcode != FUSE_FSYNC &&
 diff -Naur linuxfuse/lib/helper.c bsdfuse/lib/helper.c
 --- linuxfuse/lib/helper.c	Mon Aug 15 16:03:59 2005
-+++ bsdfuse/lib/helper.c	Sat Sep 17 22:44:02 2005
++++ bsdfuse/lib/helper.c	Fri Sep 30 11:29:31 2005
 @@ -22,7 +22,11 @@
  {
      if (progname)
@@ -265,7 +271,7 @@
  
 diff -Naur linuxfuse/lib/mount.c bsdfuse/lib/mount.c
 --- linuxfuse/lib/mount.c	Wed Aug  3 12:22:32 2005
-+++ bsdfuse/lib/mount.c	Sat Sep 17 22:44:57 2005
++++ bsdfuse/lib/mount.c	Fri Sep 30 11:29:31 2005
 @@ -21,7 +21,7 @@
  #define FUSERMOUNT_PROG         "fusermount"
  #define FUSE_COMMFD_ENV         "_FUSE_COMMFD"
@@ -383,14 +389,14 @@
  
  int fuse_mount_compat1(const char *mountpoint, const char *args[])
 diff -Naur linuxfuse/util/fusermount.c bsdfuse/util/fusermount.c
---- linuxfuse/util/fusermount.c	Fri Aug  5 12:24:55 2005
-+++ bsdfuse/util/fusermount.c	Tue Sep 13 16:47:55 2005
+--- linuxfuse/util/fusermount.c	Mon Sep 26 13:18:07 2005
++++ bsdfuse/util/fusermount.c	Fri Sep 30 11:29:31 2005
 @@ -1,3 +1,4 @@
 +#ifndef __FreeBSD__
  /*
      FUSE: Filesystem in Userspace
      Copyright (C) 2001-2005  Miklos Szeredi <miklos@szeredi.hu>
-@@ -1125,3 +1126,12 @@
+@@ -1108,3 +1109,12 @@
  
      return 0;
  }



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