* [PATCH] init/do_mounts.c: add virtiofs root fs support @ 2019-09-06 10:03 Stefan Hajnoczi 2019-09-06 19:16 ` Richard Weinberger 0 siblings, 1 reply; 8+ messages in thread From: Stefan Hajnoczi @ 2019-09-06 10:03 UTC (permalink / raw) To: virtio-fs Cc: mszeredi, David Howells, Al Viro, linux-fsdevel, Vivek Goyal, Stefan Hajnoczi Make it possible to boot directly from a virtiofs file system with tag 'myfs' using the following kernel parameters: rootfstype=virtiofs root=myfs rw Booting directly from virtiofs makes it possible to use a directory on the host as the root file system. This is convenient for testing and situations where manipulating disk image files is cumbersome. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- This patch is based on linux-next (next-20190904) but should apply cleanly to other virtiofs trees. init/do_mounts.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/init/do_mounts.c b/init/do_mounts.c index 9634ecf3743d..030be2f1999a 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -554,6 +554,16 @@ void __init mount_root(void) change_floppy("root floppy"); } #endif +#ifdef CONFIG_VIRTIO_FS + if (root_fs_names && !strcmp(root_fs_names, "virtiofs")) { + if (!do_mount_root(root_device_name, "virtiofs", + root_mountflags, root_mount_data)) + return; + + panic("VFS: Unable to mount root fs \"%s\" from virtiofs", + root_device_name); + } +#endif #ifdef CONFIG_BLOCK { int err = create_dev("/dev/root", ROOT_DEV); -- 2.21.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] init/do_mounts.c: add virtiofs root fs support 2019-09-06 10:03 [PATCH] init/do_mounts.c: add virtiofs root fs support Stefan Hajnoczi @ 2019-09-06 19:16 ` Richard Weinberger 2019-09-09 7:00 ` Stefan Hajnoczi 0 siblings, 1 reply; 8+ messages in thread From: Richard Weinberger @ 2019-09-06 19:16 UTC (permalink / raw) To: Stefan Hajnoczi Cc: virtio-fs, Miklos Szeredi, David Howells, Al Viro, linux-fsdevel, Vivek Goyal On Fri, Sep 6, 2019 at 1:15 PM Stefan Hajnoczi <stefanha@redhat.com> wrote: > > Make it possible to boot directly from a virtiofs file system with tag > 'myfs' using the following kernel parameters: > > rootfstype=virtiofs root=myfs rw > > Booting directly from virtiofs makes it possible to use a directory on > the host as the root file system. This is convenient for testing and > situations where manipulating disk image files is cumbersome. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > This patch is based on linux-next (next-20190904) but should apply > cleanly to other virtiofs trees. > > init/do_mounts.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/init/do_mounts.c b/init/do_mounts.c > index 9634ecf3743d..030be2f1999a 100644 > --- a/init/do_mounts.c > +++ b/init/do_mounts.c > @@ -554,6 +554,16 @@ void __init mount_root(void) > change_floppy("root floppy"); > } > #endif > +#ifdef CONFIG_VIRTIO_FS > + if (root_fs_names && !strcmp(root_fs_names, "virtiofs")) { > + if (!do_mount_root(root_device_name, "virtiofs", > + root_mountflags, root_mount_data)) > + return; > + > + panic("VFS: Unable to mount root fs \"%s\" from virtiofs", > + root_device_name); > + } > +#endif I think you don't need this, you can abuse a hack for mtd/ubi in prepare_namespace(). At least for 9p it works well: qemu-system-x86_64 -m 4G -M pc,accel=kvm -nographic -kernel arch/x86/boot/bzImage -append "rootfstype=9p rootflags=trans=virtio,version=9p2000.L root=mtdfake console=ttyS0 ro init=/bin/sh" -virtfs local,id=rootfs,path=/,security_model=passthrough,mount_tag=mtdfake If this works too for virtiofs I suggest to cleanup the hack and generalize it. B-) -- Thanks, //richard ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] init/do_mounts.c: add virtiofs root fs support 2019-09-06 19:16 ` Richard Weinberger @ 2019-09-09 7:00 ` Stefan Hajnoczi 2019-09-17 15:18 ` [Virtio-fs] " Stefan Hajnoczi 2019-09-17 18:19 ` Richard Weinberger 0 siblings, 2 replies; 8+ messages in thread From: Stefan Hajnoczi @ 2019-09-09 7:00 UTC (permalink / raw) To: Richard Weinberger Cc: virtio-fs, Miklos Szeredi, David Howells, Al Viro, linux-fsdevel, Vivek Goyal [-- Attachment #1: Type: text/plain, Size: 2823 bytes --] On Fri, Sep 06, 2019 at 09:16:04PM +0200, Richard Weinberger wrote: > On Fri, Sep 6, 2019 at 1:15 PM Stefan Hajnoczi <stefanha@redhat.com> wrote: > > > > Make it possible to boot directly from a virtiofs file system with tag > > 'myfs' using the following kernel parameters: > > > > rootfstype=virtiofs root=myfs rw > > > > Booting directly from virtiofs makes it possible to use a directory on > > the host as the root file system. This is convenient for testing and > > situations where manipulating disk image files is cumbersome. > > > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > > --- > > This patch is based on linux-next (next-20190904) but should apply > > cleanly to other virtiofs trees. > > > > init/do_mounts.c | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/init/do_mounts.c b/init/do_mounts.c > > index 9634ecf3743d..030be2f1999a 100644 > > --- a/init/do_mounts.c > > +++ b/init/do_mounts.c > > @@ -554,6 +554,16 @@ void __init mount_root(void) > > change_floppy("root floppy"); > > } > > #endif > > +#ifdef CONFIG_VIRTIO_FS > > + if (root_fs_names && !strcmp(root_fs_names, "virtiofs")) { > > + if (!do_mount_root(root_device_name, "virtiofs", > > + root_mountflags, root_mount_data)) > > + return; > > + > > + panic("VFS: Unable to mount root fs \"%s\" from virtiofs", > > + root_device_name); > > + } > > +#endif > > I think you don't need this, you can abuse a hack for mtd/ubi in > prepare_namespace(). > At least for 9p it works well: > qemu-system-x86_64 -m 4G -M pc,accel=kvm -nographic -kernel > arch/x86/boot/bzImage -append "rootfstype=9p > rootflags=trans=virtio,version=9p2000.L root=mtdfake console=ttyS0 ro > init=/bin/sh" -virtfs > local,id=rootfs,path=/,security_model=passthrough,mount_tag=mtdfake That is worse because: 1. The file system must be named "mtd*" or "ubi*". 2. When mounting fails you get confusing error messages about block devices and partitions. These do not apply to virtio-fs or virtio-9p. > If this works too for virtiofs I suggest to cleanup the hack and > generalize it. B-) Why mtd and ubi block devices even have a special case? Maybe this code was added because ROOT_DEV = name_to_dev_t(root_device_name) doesn't work for "mtd:partition" device names so the regular CONFIG_BLOCK code path doesn't work for these devices. Given the ordering/fallback logic in prepare_namespace()/mount_root() I don't feel comfortable changing other code paths. It's likely to break something. If you or others have a concrete suggestion for how to generalize this I'm happy to try implementing it. Stefan [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Virtio-fs] [PATCH] init/do_mounts.c: add virtiofs root fs support 2019-09-09 7:00 ` Stefan Hajnoczi @ 2019-09-17 15:18 ` Stefan Hajnoczi 2019-09-17 18:19 ` Richard Weinberger 1 sibling, 0 replies; 8+ messages in thread From: Stefan Hajnoczi @ 2019-09-17 15:18 UTC (permalink / raw) To: Richard Weinberger Cc: Miklos Szeredi, David Howells, virtio-fs, Al Viro, linux-fsdevel, Vivek Goyal [-- Attachment #1: Type: text/plain, Size: 3033 bytes --] On Mon, Sep 09, 2019 at 09:00:39AM +0200, Stefan Hajnoczi wrote: > On Fri, Sep 06, 2019 at 09:16:04PM +0200, Richard Weinberger wrote: > > On Fri, Sep 6, 2019 at 1:15 PM Stefan Hajnoczi <stefanha@redhat.com> wrote: > > > > > > Make it possible to boot directly from a virtiofs file system with tag > > > 'myfs' using the following kernel parameters: > > > > > > rootfstype=virtiofs root=myfs rw > > > > > > Booting directly from virtiofs makes it possible to use a directory on > > > the host as the root file system. This is convenient for testing and > > > situations where manipulating disk image files is cumbersome. > > > > > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > > > --- > > > This patch is based on linux-next (next-20190904) but should apply > > > cleanly to other virtiofs trees. > > > > > > init/do_mounts.c | 10 ++++++++++ > > > 1 file changed, 10 insertions(+) > > > > > > diff --git a/init/do_mounts.c b/init/do_mounts.c > > > index 9634ecf3743d..030be2f1999a 100644 > > > --- a/init/do_mounts.c > > > +++ b/init/do_mounts.c > > > @@ -554,6 +554,16 @@ void __init mount_root(void) > > > change_floppy("root floppy"); > > > } > > > #endif > > > +#ifdef CONFIG_VIRTIO_FS > > > + if (root_fs_names && !strcmp(root_fs_names, "virtiofs")) { > > > + if (!do_mount_root(root_device_name, "virtiofs", > > > + root_mountflags, root_mount_data)) > > > + return; > > > + > > > + panic("VFS: Unable to mount root fs \"%s\" from virtiofs", > > > + root_device_name); > > > + } > > > +#endif > > > > I think you don't need this, you can abuse a hack for mtd/ubi in > > prepare_namespace(). > > At least for 9p it works well: > > qemu-system-x86_64 -m 4G -M pc,accel=kvm -nographic -kernel > > arch/x86/boot/bzImage -append "rootfstype=9p > > rootflags=trans=virtio,version=9p2000.L root=mtdfake console=ttyS0 ro > > init=/bin/sh" -virtfs > > local,id=rootfs,path=/,security_model=passthrough,mount_tag=mtdfake > > That is worse because: > 1. The file system must be named "mtd*" or "ubi*". > 2. When mounting fails you get confusing error messages about block > devices and partitions. These do not apply to virtio-fs or > virtio-9p. > > > If this works too for virtiofs I suggest to cleanup the hack and > > generalize it. B-) > > Why mtd and ubi block devices even have a special case? Maybe this code > was added because ROOT_DEV = name_to_dev_t(root_device_name) doesn't > work for "mtd:partition" device names so the regular CONFIG_BLOCK code > path doesn't work for these devices. > > Given the ordering/fallback logic in prepare_namespace()/mount_root() I > don't feel comfortable changing other code paths. It's likely to break > something. > > If you or others have a concrete suggestion for how to generalize this > I'm happy to try implementing it. Ping Stefan [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] init/do_mounts.c: add virtiofs root fs support 2019-09-09 7:00 ` Stefan Hajnoczi 2019-09-17 15:18 ` [Virtio-fs] " Stefan Hajnoczi @ 2019-09-17 18:19 ` Richard Weinberger 2019-09-17 18:30 ` Al Viro 1 sibling, 1 reply; 8+ messages in thread From: Richard Weinberger @ 2019-09-17 18:19 UTC (permalink / raw) To: Stefan Hajnoczi Cc: virtio-fs, Miklos Szeredi, David Howells, Al Viro, linux-fsdevel, Vivek Goyal On Mon, Sep 9, 2019 at 9:00 AM Stefan Hajnoczi <stefanha@redhat.com> wrote: > On Fri, Sep 06, 2019 at 09:16:04PM +0200, Richard Weinberger wrote: > > On Fri, Sep 6, 2019 at 1:15 PM Stefan Hajnoczi <stefanha@redhat.com> wrote: > > I think you don't need this, you can abuse a hack for mtd/ubi in > > prepare_namespace(). > > At least for 9p it works well: > > qemu-system-x86_64 -m 4G -M pc,accel=kvm -nographic -kernel > > arch/x86/boot/bzImage -append "rootfstype=9p > > rootflags=trans=virtio,version=9p2000.L root=mtdfake console=ttyS0 ro > > init=/bin/sh" -virtfs > > local,id=rootfs,path=/,security_model=passthrough,mount_tag=mtdfake > > That is worse because: > 1. The file system must be named "mtd*" or "ubi*". > 2. When mounting fails you get confusing error messages about block > devices and partitions. These do not apply to virtio-fs or > virtio-9p. This is the current situation, I'm not saying it is perfect. But before we add another special case for a filesystem we should at least try to consolidate this stuff. > > If this works too for virtiofs I suggest to cleanup the hack and > > generalize it. B-) > > Why mtd and ubi block devices even have a special case? Maybe this code > was added because ROOT_DEV = name_to_dev_t(root_device_name) doesn't > work for "mtd:partition" device names so the regular CONFIG_BLOCK code > path doesn't work for these devices. ubi and mtd are not block devices, they are character devices. That's why the hack with name matching was added a long time ago. > Given the ordering/fallback logic in prepare_namespace()/mount_root() I > don't feel comfortable changing other code paths. It's likely to break > something. > > If you or others have a concrete suggestion for how to generalize this > I'm happy to try implementing it. mtd, ubi, virtiofs and 9p have one thing in common, they are not block devices. What about a new miscroot= kernel parameter? -- Thanks, //richard ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] init/do_mounts.c: add virtiofs root fs support 2019-09-17 18:19 ` Richard Weinberger @ 2019-09-17 18:30 ` Al Viro 2019-09-17 18:34 ` [Virtio-fs] " Dr. David Alan Gilbert 0 siblings, 1 reply; 8+ messages in thread From: Al Viro @ 2019-09-17 18:30 UTC (permalink / raw) To: Richard Weinberger Cc: Stefan Hajnoczi, virtio-fs, Miklos Szeredi, David Howells, linux-fsdevel, Vivek Goyal On Tue, Sep 17, 2019 at 08:19:55PM +0200, Richard Weinberger wrote: > mtd, ubi, virtiofs and 9p have one thing in common, they are not block devices. > What about a new miscroot= kernel parameter? How about something like xfs!sda5 or nfs!foo.local.net/bar, etc.? With ubi et.al. covered by the same syntax... ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Virtio-fs] [PATCH] init/do_mounts.c: add virtiofs root fs support 2019-09-17 18:30 ` Al Viro @ 2019-09-17 18:34 ` Dr. David Alan Gilbert 2019-09-18 10:51 ` Stefan Hajnoczi 0 siblings, 1 reply; 8+ messages in thread From: Dr. David Alan Gilbert @ 2019-09-17 18:34 UTC (permalink / raw) To: Al Viro Cc: Richard Weinberger, Miklos Szeredi, David Howells, virtio-fs, linux-fsdevel, Vivek Goyal * Al Viro (viro@zeniv.linux.org.uk) wrote: > On Tue, Sep 17, 2019 at 08:19:55PM +0200, Richard Weinberger wrote: > > > mtd, ubi, virtiofs and 9p have one thing in common, they are not block devices. > > What about a new miscroot= kernel parameter? > > How about something like xfs!sda5 or nfs!foo.local.net/bar, etc.? With > ubi et.al. covered by the same syntax... Would Stefan's patch work if there was just a way to test for non-block based fileystsmes and we replaced !strcmp(root_fs_names, "virtiofs") by not_block_based_fs(root_fs_names) Or is there some magic that the other filesystems do that's specific? Dave > _______________________________________________ > Virtio-fs mailing list > Virtio-fs@redhat.com > https://www.redhat.com/mailman/listinfo/virtio-fs -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Virtio-fs] [PATCH] init/do_mounts.c: add virtiofs root fs support 2019-09-17 18:34 ` [Virtio-fs] " Dr. David Alan Gilbert @ 2019-09-18 10:51 ` Stefan Hajnoczi 0 siblings, 0 replies; 8+ messages in thread From: Stefan Hajnoczi @ 2019-09-18 10:51 UTC (permalink / raw) To: Dr. David Alan Gilbert Cc: Al Viro, Miklos Szeredi, Richard Weinberger, David Howells, linux-fsdevel, virtio-fs, Vivek Goyal [-- Attachment #1: Type: text/plain, Size: 773 bytes --] On Tue, Sep 17, 2019 at 07:34:25PM +0100, Dr. David Alan Gilbert wrote: > * Al Viro (viro@zeniv.linux.org.uk) wrote: > > On Tue, Sep 17, 2019 at 08:19:55PM +0200, Richard Weinberger wrote: > > > > > mtd, ubi, virtiofs and 9p have one thing in common, they are not block devices. > > > What about a new miscroot= kernel parameter? > > > > How about something like xfs!sda5 or nfs!foo.local.net/bar, etc.? With > > ubi et.al. covered by the same syntax... > > Would Stefan's patch work if there was just a way to test for non-block > based fileystsmes and we replaced > !strcmp(root_fs_names, "virtiofs") by > not_block_based_fs(root_fs_names) > > Or is there some magic that the other filesystems do that's specific? I will try this. Stefan [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-09-18 10:51 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-09-06 10:03 [PATCH] init/do_mounts.c: add virtiofs root fs support Stefan Hajnoczi 2019-09-06 19:16 ` Richard Weinberger 2019-09-09 7:00 ` Stefan Hajnoczi 2019-09-17 15:18 ` [Virtio-fs] " Stefan Hajnoczi 2019-09-17 18:19 ` Richard Weinberger 2019-09-17 18:30 ` Al Viro 2019-09-17 18:34 ` [Virtio-fs] " Dr. David Alan Gilbert 2019-09-18 10:51 ` Stefan Hajnoczi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).