svn commit: r348009 - projects/fuse2/sys/fs/fuse

Alan Somers asomers at FreeBSD.org
Mon May 20 20:54:10 UTC 2019


Author: asomers
Date: Mon May 20 20:54:09 2019
New Revision: 348009
URL: https://svnweb.freebsd.org/changeset/base/348009

Log:
  fusefs: unset MNT_LOCAL
  
  The kernel can't tell whether or not a fuse file system is truly local.  But
  what really matters is two things:
  
  1) Can I/O to a file system block indefinitely?
  2) Can the file system bypass the O_BENEATH restriction during lookup?
  
  For fuse, the answer to both of those question is yes.  So as far as the
  kernel is concerned, it's a non-local file system.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/fuse2/sys/fs/fuse/fuse_vfsops.c

Modified: projects/fuse2/sys/fs/fuse/fuse_vfsops.c
==============================================================================
--- projects/fuse2/sys/fs/fuse/fuse_vfsops.c	Mon May 20 20:48:04 2019	(r348008)
+++ projects/fuse2/sys/fs/fuse/fuse_vfsops.c	Mon May 20 20:54:09 2019	(r348009)
@@ -335,7 +335,11 @@ fuse_vfsop_mount(struct mount *mp)
 	vfs_getnewfsid(mp);
 	MNT_ILOCK(mp);
 	mp->mnt_data = data;
-	mp->mnt_flag |= MNT_LOCAL;
+	/* 
+	 * FUSE file systems can be either local or remote, but the kernel
+	 * can't tell the difference.
+	 */
+	mp->mnt_flag &= ~MNT_LOCAL;
 	mp->mnt_kern_flag |= MNTK_USES_BCACHE;
 	MNT_IUNLOCK(mp);
 	/* We need this here as this slot is used by getnewvnode() */


More information about the svn-src-projects mailing list