2012-05-14 22:59:06

by Eric Van Hensbergen

[permalink] [raw]
Subject: Re: [V9fs-developer] [PATCH] Add support for 9P as a root filesystem

Is this still strictly necessary? I thought the guys booting with a
root using virtfs didn't need this -- but perhaps their approach
depends on specific configurations in an initrd and this doesn't?

-eric

(Add cc: linux-fs and cc: linux-kernel)

On Mon, May 14, 2012 at 9:29 AM, Ian Kirk <[email protected]> wrote:
> This patch adds support for running a 9P filesystem as root using a method
> similar to NFS root. Passing root=9p to the Kernel command line works
> in a comparable way to passing root=nfs
>
> Signed-off-by: Ian Kirk <[email protected]>
> ---
> ?fs/9p/Kconfig ? ? ? ? ? ?| ? ?7 +++++++
> ?include/linux/root_dev.h | ? ?1 +
> ?init/do_mounts.c ? ? ? ? | ? 25 +++++++++++++++++++++++++
> ?3 files changed, 33 insertions(+), 0 deletions(-)
>
> diff --git a/fs/9p/Kconfig b/fs/9p/Kconfig
> index 0a93dc1..ffd73f5 100644
> --- a/fs/9p/Kconfig
> +++ b/fs/9p/Kconfig
> @@ -31,4 +31,11 @@ config 9P_FS_POSIX_ACL
>
> ? ? ? ? ?If you don't know what Access Control Lists are, say N
>
> +config ROOT_9P
> + ? ? ? bool "9p root filesystem"
> + ? ? ? depends on 9P_FS=m || 9P_FS=y
> + ? ? ? help
> + ? ? ? ? Permits you to pass root=9p to the kernel command line and have the
> + ? ? ? ? root filesystem on 9p
> +
> ?endif
> diff --git a/include/linux/root_dev.h b/include/linux/root_dev.h
> index ed241aa..61633ed 100644
> --- a/include/linux/root_dev.h
> +++ b/include/linux/root_dev.h
> @@ -7,6 +7,7 @@
>
> ?enum {
> ? ? ? ?Root_NFS = MKDEV(UNNAMED_MAJOR, 255),
> + ? ? ? Root_9P = MKDEV(UNNAMED_MAJOR, 254),
> ? ? ? ?Root_RAM0 = MKDEV(RAMDISK_MAJOR, 0),
> ? ? ? ?Root_RAM1 = MKDEV(RAMDISK_MAJOR, 1),
> ? ? ? ?Root_FD0 = MKDEV(FLOPPY_MAJOR, 0),
> diff --git a/init/do_mounts.c b/init/do_mounts.c
> index 2974c8b..4ec8dce 100644
> --- a/init/do_mounts.c
> +++ b/init/do_mounts.c
> @@ -212,6 +212,9 @@ dev_t name_to_dev_t(char *name)
> ? ? ? ?res = Root_RAM0;
> ? ? ? ?if (strcmp(name, "ram") == 0)
> ? ? ? ? ? ? ? ?goto done;
> + ? ? ? res = Root_9P;
> + ? ? ? if (strcmp(name, "9p") == 0)
> + ? ? ? ? ? ? ? goto done;
>
> ? ? ? ?if (strlen(name) > 31)
> ? ? ? ? ? ? ? ?goto fail;
> @@ -439,6 +442,18 @@ static int __init mount_nfs_root(void)
> ?}
> ?#endif
>
> +#ifdef CONFIG_ROOT_9P
> +static int __init mount_9p_root(void)
> +{
> + ? ? ? int err = do_mount_root("root", "9p", root_mountflags, root_mount_data);
> +
> + ? ? ? if (err == 0)
> + ? ? ? ? ? ? ? return 1;
> +
> + ? ? ? return 0;
> +}
> +#endif
> +
> ?#if defined(CONFIG_BLK_DEV_RAM) || defined(CONFIG_BLK_DEV_FD)
> ?void __init change_floppy(char *fmt, ...)
> ?{
> @@ -471,6 +486,16 @@ void __init change_floppy(char *fmt, ...)
>
> ?void __init mount_root(void)
> ?{
> +#ifdef CONFIG_ROOT_9P
> + ? ? ? if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR) {
> + ? ? ? ? ? ? ? if (mount_9p_root())
> + ? ? ? ? ? ? ? ? ? ? ? return;
> +
> + ? ? ? ? ? ? ? printk(KERN_ERR "VFS: Unable to mount root fs via 9p\n");
> +
> + ? ? ? ? ? ? ? ROOT_DEV = Root_FD0;
> + ? ? ? }
> +#endif
> ?#ifdef CONFIG_ROOT_NFS
> ? ? ? ?if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR) {
> ? ? ? ? ? ? ? ?if (mount_nfs_root())
> --
> 1.7.1
>
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> V9fs-developer mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/v9fs-developer