From owner-freebsd-stable@FreeBSD.ORG Tue Oct 30 13:59:12 2012 Return-Path: Delivered-To: stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 77A8A6F8; Tue, 30 Oct 2012 13:59:12 +0000 (UTC) (envelope-from bright@mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id 428158FC08; Tue, 30 Oct 2012 13:59:12 +0000 (UTC) Received: from [10.252.136.148] (85.sub-174-234-88.myvzw.com [174.234.88.85]) by elvis.mu.org (Postfix) with ESMTPSA id A31501A3D77; Tue, 30 Oct 2012 06:59:11 -0700 (PDT) References: <508FA008.2040503@mu.org> <20121030120019.GU73505@kib.kiev.ua> In-Reply-To: <20121030120019.GU73505@kib.kiev.ua> Mime-Version: 1.0 (1.0) Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Message-Id: X-Mailer: iPhone Mail (9B206) From: Alfred Perlstein Subject: Re: tmpfs nfs exports? Date: Tue, 30 Oct 2012 06:59:08 -0700 To: Konstantin Belousov Cc: "jh@freebsd.org" , "stable@freebsd.org" , "re@freebsd.org" , "kevlo@freebsd.org" X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Oct 2012 13:59:12 -0000 Thanks all. I will fix up the merge step and commit. Sent from my iPhone On Oct 30, 2012, at 5:00 AM, Konstantin Belousov wrote: > 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,