On Fri, 13 Apr 2012 09:11:39 +0300 Jaakko Heinonen wrote: JH> On 2012-01-23, Mikolaj Golub wrote: >> I see two issues with this patch:
JH> What do you think about this patch? I think it is much better than we have currently :-). JH> %%% JH> Index: sys/fs/tmpfs/tmpfs.h JH> =================================================================== JH> --- sys/fs/tmpfs/tmpfs.h (revision 234201) JH> +++ sys/fs/tmpfs/tmpfs.h (working copy) JH> @@ -387,6 +387,9 @@ struct tmpfs_mount { JH> * tmpfs_pool.c. */ JH> uma_zone_t tm_dirent_pool; JH> uma_zone_t tm_node_pool; JH> + JH> + /* Read-only status. */ JH> + int tm_ronly; JH> }; JH> #define TMPFS_LOCK(tm) mtx_lock(&(tm)->allnode_lock) JH> #define TMPFS_UNLOCK(tm) mtx_unlock(&(tm)->allnode_lock) JH> Index: sys/fs/tmpfs/tmpfs_vfsops.c JH> =================================================================== JH> --- sys/fs/tmpfs/tmpfs_vfsops.c (revision 234201) JH> +++ sys/fs/tmpfs/tmpfs_vfsops.c (working copy) JH> @@ -82,6 +82,10 @@ static const char *tmpfs_opts[] = { JH> NULL JH> }; JH> JH> +static const char *tmpfs_updateopts[] = { JH> + "from", "export", NULL JH> +}; JH> + JH> /* --------------------------------------------------------------------- */ JH> JH> static int JH> @@ -150,12 +154,13 @@ tmpfs_mount(struct mount *mp) JH> return (EINVAL); JH> JH> if (mp->mnt_flag & MNT_UPDATE) { JH> - /* JH> - * Only support update mounts for NFS export. JH> - */ JH> - if (vfs_flagopt(mp->mnt_optnew, "export", NULL, 0)) JH> - return (0); JH> - return (EOPNOTSUPP); JH> + /* Only support update mounts for certain options. */ JH> + if (vfs_filteropt(mp->mnt_optnew, tmpfs_updateopts) != 0) JH> + return (EOPNOTSUPP); JH> + if (vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0) != JH> + ((struct tmpfs_mount *)mp->mnt_data)->tm_ronly) JH> + return (EOPNOTSUPP); JH> + return (0); JH> } JH> JH> vn_lock(mp->mnt_vnodecovered, LK_SHARED | LK_RETRY); JH> @@ -228,6 +233,7 @@ tmpfs_mount(struct mount *mp) JH> tmpfs_node_ctor, tmpfs_node_dtor, JH> tmpfs_node_init, tmpfs_node_fini, JH> UMA_ALIGN_PTR, 0); JH> + tmp->tm_ronly = (mp->mnt_flag & MNT_RDONLY) != 0; JH> JH> /* Allocate the root node. */ JH> error = tmpfs_alloc_node(tmp, VDIR, root_uid, JH> %%% JH> -- JH> Jaakko -- Mikolaj Golub _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"