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,
On 2012/10/30 17:38, Alfred Perlstein wrote:> Hey folks, any reason why not to include the following patch in 9.1? > It would be nice to have tmpfs be exportable.Ah, sorry. I forgot to MFC it.> > I'm good to commit it, I can also wait until post 9.1.Please commit it, thanks. Kevin
On Tue, Oct 30, 2012 at 02:38:16AM -0700, Alfred Perlstein wrote:> 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.It is too late for 9.1. Patch is fine for stable/9, but you merged at the wrong point. Merge at sys/, not at the root of the sources.> > $ 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,-------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 196 bytes Desc: not available URL: <http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20121030/11c20f05/attachment.sig>
Alfred Perlstein <bright <at> mu.org> writes:> > 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. > ...How do you identify tmpfs ? With fsid ? Since nfs server is stateless, are these exports identical ? export /tmp, reboot, export /tmp What about /tmp on tmpfs ? export /tmp, reboot, export /tmp jb