Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Oct 2012 02:38:16 -0700
From:      Alfred Perlstein <bright@mu.org>
To:        stable@freebsd.org, jh@freebsd.org, kevlo@freebsd.org,  re@freebsd.org
Subject:   tmpfs nfs exports?
Message-ID:  <508FA008.2040503@mu.org>

next in thread | raw e-mail | index | archive | help
Hey folks, any reason why not to include the following patch in 9.1? It 
would be nice to have tmpfs be exportable.

I'm good to commit it, I can also wait until post 9.1.

$ svn diff
Index: .
===================================================================
--- .    (revision 242331)
+++ .    (working copy)

Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
    Merged /head:r234346
Index: sys
===================================================================
--- sys    (revision 242331)
+++ sys    (working copy)

Property changes on: sys
___________________________________________________________________
Modified: svn:mergeinfo
    Merged /head/sys:r234346
Index: sys/fs
===================================================================
--- sys/fs    (revision 242331)
+++ sys/fs    (working copy)

Property changes on: sys/fs
___________________________________________________________________
Modified: svn:mergeinfo
    Merged /head/sys/fs:r234346
Index: sys/fs/tmpfs/tmpfs.h
===================================================================
--- sys/fs/tmpfs/tmpfs.h    (revision 242331)
+++ sys/fs/tmpfs/tmpfs.h    (working copy)
@@ -387,6 +387,9 @@
       * tmpfs_pool.c. */
      uma_zone_t        tm_dirent_pool;
      uma_zone_t        tm_node_pool;
+
+    /* Read-only status. */
+    int            tm_ronly;
  };
  #define TMPFS_LOCK(tm) mtx_lock(&(tm)->allnode_lock)
  #define TMPFS_UNLOCK(tm) mtx_unlock(&(tm)->allnode_lock)
Index: sys/fs/tmpfs/tmpfs_vfsops.c
===================================================================
--- sys/fs/tmpfs/tmpfs_vfsops.c    (revision 242331)
+++ sys/fs/tmpfs/tmpfs_vfsops.c    (working copy)
@@ -82,6 +82,10 @@
      NULL
  };

+static const char *tmpfs_updateopts[] = {
+    "from", "export", NULL
+};
+
  /* 
--------------------------------------------------------------------- */

  static int
@@ -193,10 +197,13 @@
          return (EINVAL);

      if (mp->mnt_flag & MNT_UPDATE) {
-        /* XXX: There is no support yet to update file system
-         * settings.  Should be added. */
-
-        return EOPNOTSUPP;
+        /* Only support update mounts for certain options. */
+        if (vfs_filteropt(mp->mnt_optnew, tmpfs_updateopts) != 0)
+            return (EOPNOTSUPP);
+        if (vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0) !=
+            ((struct tmpfs_mount *)mp->mnt_data)->tm_ronly)
+            return (EOPNOTSUPP);
+        return (0);
      }

      vn_lock(mp->mnt_vnodecovered, LK_SHARED | LK_RETRY);
@@ -269,6 +276,7 @@
          tmpfs_node_ctor, tmpfs_node_dtor,
          tmpfs_node_init, tmpfs_node_fini,
          UMA_ALIGN_PTR, 0);
+    tmp->tm_ronly = (mp->mnt_flag & MNT_RDONLY) != 0;

      /* Allocate the root node. */
      error = tmpfs_alloc_node(tmp, VDIR, root_uid,




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