From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Daniel Golle <daniel@makrotopia.org>
Cc: Richard Weinberger <richard@nod.at>,
openwrt-devel@lists.openwrt.org,
Hauke Mehrtens <hauke@hauke-m.de>,
lede-dev@lists.infradead.org, linux-mtd@lists.infradead.org,
Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
Zoltan HERPAI <wigyori@uid0.hu>,
Ralph Sennhauser <ralph.sennhauser@gmail.com>,
Brian Norris <computersforpeace@gmail.com>
Subject: Re: [PATCH/RFC 0/3] UBI: unify mouting rootfs based on cmdline parameter
Date: Sun, 28 Aug 2016 16:17:34 +0200 [thread overview]
Message-ID: <20160828161734.7ab94563@bbrezillon> (raw)
In-Reply-To: <20160828134756.GC1623@makrotopia.org>
On Sun, 28 Aug 2016 15:47:56 +0200
Daniel Golle <daniel@makrotopia.org> wrote:
> Hi Richard,
>
> On Sun, Aug 28, 2016 at 01:57:40PM +0200, Richard Weinberger wrote:
> > Daniel,
> >
> > On 28.08.2016 13:44, Daniel Golle wrote:
> > > Hi Richard,
> > >
> > > On Sun, Aug 28, 2016 at 11:28:18AM +0200, Richard Weinberger wrote:
> > >> Ralph,
> > >>
> > >> On 28.08.2016 11:19, Ralph Sennhauser wrote:
> > >>>>> On the other hand an initramfs can carry the logic to figure out
> > >>>>> which to mount and is what I use for my self. The busybox based
> > >>>>> implementation I use adds a tad over 300Kb to the uImage, perfectly
> > >>>>> acceptable in my case.
> > >>>>
> > >>>> When your minimal initramfs consumes 300KiB you're doing something
> > >>>> wrong. As I said in another thread, for your special purpose you'd
> > >>>> need to create a minitmal userspace for initramfs, no fancy (eg)libc,
> > >>>> just a bare minimum /init program which does the mount probing.
> > >>>> Shouldn’t be more than a few system calls.
> > >
> > > That would indeed be nice, however, I fail to see how this can work
> > > with little effort *before* having devtmpfs ready. Also, we'll need a
> > > non-standard kernel parameter (usually "real_root=") to pass the
> > > selected rootfs down to our to-be-implemented micro-sized initramfs.
> >
> > devtmpfs is available in initramfs.
>
> Yes, but you'll need to mount it (or tell the kernel to do so
> automatically, which will then again cause problems on non-initramfs
> systems where the init process is taking care of that).
> Once you use device from that devtmpfs, you'll no longer be able to
> umount it (because it's then busy), resulting in the whole initfamfs
> to eat up RAM even after the real rootfs has been mounted.
> As I said, I'm not generally against that, I just think it should not
> be mandatory for the most simple possible case.
>
> >
> > >>>>
> > >>>> Thanks,
> > >>>> //richard
> > >>>
> > >>> Well, I use busybox because I'm lazy and still get away with only 300Kb.
> > >>> And as I said there is plenty space on my device. (6M per uImage OEM
> > >>> firmware configuration)
> > >>
> > >> So, problem solved. Use an initramfs. :-)
> > >
> > > I agree this might be acceptable for some, but certainly not all
> > > cases. Unlike to your previous statement, I'm not generally opposed
> > > to having an initramfs included in the kernel as that can also provide
> > > other nice features such as recovery/failsafe methods.
> > > We've had this discussion before and my goal is, as I explained, to
> > > make the kernel as reusable as possible and even allow people to use
> > > OpenWrt/LEDE's kernel binary with other distributions. I'm sure
> > > this is also possible when using an initramfs, however, I still fail to
> > > see the necessity for that on simple devices.
> > > Imho, using an initramfs shouldn't be mandatory which is why there are
> > > patches (now down to about 80 LoC, resulting in probably less than 1kB
> > > in added binary size) to mount the rootfs without the need of an
> > > initramfs, simply because I do not consider that to be a
> > > "complex setup" if there is no less complex and yet generic way
> > > imaginable to boot on that platform at all.
> > > Hence I'm not buying the argument that ubiX_Y and ubiblockX_Y are two
> > > different devices and thus, this is a device selection problem and thus
> > > initramfs is the recommended way -- in fact, all other filesystems
> > > which do *not* build upon a block device provide some probing hacks in
> > > early userspace. Take MTD as an example: mtdblock devices are
> > > automagically provided and needed for block-based filesystems, no need
> > > for initramfs or kernel parameters to achieve that. For UBI, ubiblock
> > > (or gluebi...) is required to use UBI for anything else than UBIFS.
> > > Anyway, I'm afraid you have made your decission and additional
> > > arguments have no influence what-so-ever.
> > >
> > >>
> > >> </discussion>,
> > >
> > > If that's the whole answer ("Use initramfs. End of story."), that's
> > > pretty disappointing. Dispite your previous invitation to discuss the
> > > matter and collaborate to address the needs of all parties involved,
> > > you are now offering only one option which is not agreeable by all
> > > parties (which is the obvious reason for those nasty patches to exist
> > > in first place). Carrying a few patches in our local overlay doesn't
> > > truly hurt in a technical sense, however, it'd be nicer to discuss how
> > > those features could be brought upstream or mitigate our local patches
> > > in other ways.
> > > In the case of not finding room for a debate and your answer is a
> > > straight "we don't want this feature upstream" this is never the less
> > > a good reference to remember when touching those patches in future:
> > > falls into "we tried, they didn't want it" and thus we'll keep carrying
> > > them around, at least as long as there are platforms needing them.
> >
> > Well, it is more a "use initramfs or cmdline via bootloader or cmdline via DT"
> > but you refuse to use *all* of these.
>
> I'll happily use cmdline if it would be possible in a filesystem-type
> agnostic way. The problem I see is that currently, when following that
> suggesting, I'll end up with information about the filesystem-type in
> either the bootloader or device-tree, which really shouldn't be. Hence
> my suggestion I was intending to discuss here.
>
> > I asked to discuss and explain your use case and patches on linux-mtd. You did.
> > We explained you how to solve your issues without the need of any kernel hack.
> > You refused.
>
> I went through your suggestions and tried to follow them as closely as
> possible given the use-case. What I ended up with is a completely new
> and very different set of patches which is required to actually be able
> to do so.
>
> >
> > You bring over and over the same arguments and we showed you every single time
> > that your kernel hacks are not needed and everything can be solved perfectly fine
> > using existing features. This is disappointing.
>
> All suggestions include the problem named above (needing to be aware
> of the rootfs-type in a place where I shouldn't). If I don't feel that
> this is being understood, repeating and explainign it more deeply is a
> quite natural reaction.
>
> > Discussing a patch to death does not get it merged.
>
> I'm also happy to come up with alternative implementations or accept
> any suggestions which would actually resolve the issue.
> Requirements:
> - the bootloader may be proprietary, so we cannot require users to touch it
> (I feel that this was understood, no need to discuss again)
> - run the exact same kernel + device-tree with different filesystems,
> eg. UBIFS and SQUASHFS. This is intended in the kernel, ie. one can
> specify a list of filesystems like rootfstype=squashfs,jffs2
> or rootfstype=squashfs,ext4 (which is what we do on NOR-flash or
> block-based devices)
>
> >
> > So it is not a thing of not finding room for a debate. We debated all aspects
> > multiple times and provided solutions.
>
> Have you actually looked into the patches rather than just replied
> to the cover-letter?
>
> Let's make a check-list:
> OK attach UBI during boot
> -> use ubi.mtd=ubi in cmdline instead
> OK probe-mount UBIFS
> -> patches merged upstream (MS_SILENT)
> HACK move volume name parser from UBIFS to ubi_open_volume_str()
> -> refused, no debate, no good alternative
> HACK introduce ubiblock_create_dev() passing back dev_t of the created
> ubiblock device
> -> patch refused, no debate, no good alternative
> HACK set ROOT_DEV for created ubiblock device
> -> not discussed here, but that's ok :)
I'm just reacting at your implementation proposal, so don't take this
as a 'yes, Boris seems to accept the concept of trial-and-error FS probe
on top of UBI vol in the kernel'.
But wouldn't something like that [1] be both simpler and self-contained?
Don't know if that works, but I think it's better to have a single
place to change (here UBIFS), than touching core kernel code along with
UBI and UBIFS.
Of course, this does not solve the auto ubi-to-ubiblock attach, but
that can be done with another parameter, like
ubi.block=attach_all_ro_vols.
[1]http://code.bulix.org/fkxrgt-105392
next prev parent reply other threads:[~2016-08-28 14:17 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-27 19:43 [PATCH/RFC 0/3] UBI: unify mouting rootfs based on cmdline parameter Daniel Golle
2016-08-27 20:43 ` Richard Weinberger
2016-08-27 21:06 ` Daniel Golle
2016-08-27 21:23 ` Richard Weinberger
2016-08-27 23:13 ` Daniel Golle
2016-08-27 23:33 ` Richard Weinberger
2016-08-28 6:47 ` Boris Brezillon
2016-08-28 7:10 ` Ralph Sennhauser
2016-08-28 8:12 ` Richard Weinberger
2016-08-28 9:19 ` Ralph Sennhauser
2016-08-28 9:28 ` Richard Weinberger
2016-08-28 11:44 ` Daniel Golle
2016-08-28 11:57 ` Richard Weinberger
2016-08-28 13:47 ` Daniel Golle
2016-08-28 14:17 ` Boris Brezillon [this message]
2016-08-28 12:10 ` Ralph Sennhauser
2016-08-28 13:24 ` Boris Brezillon
2016-08-28 14:12 ` Ezequiel Garcia
2016-08-28 14:20 ` Boris Brezillon
2016-08-28 14:25 ` Ezequiel Garcia
2016-08-28 14:40 ` Daniel Golle
2016-08-28 15:00 ` Boris Brezillon
2016-08-28 15:24 ` Daniel Golle
2016-08-28 16:35 ` Boris Brezillon
2016-08-28 14:32 ` Daniel Golle
2016-08-28 14:27 ` Daniel Golle
2016-08-28 14:54 ` Ezequiel Garcia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160828161734.7ab94563@bbrezillon \
--to=boris.brezillon@free-electrons.com \
--cc=computersforpeace@gmail.com \
--cc=daniel@makrotopia.org \
--cc=ezequiel@vanguardiasur.com.ar \
--cc=hauke@hauke-m.de \
--cc=lede-dev@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=openwrt-devel@lists.openwrt.org \
--cc=ralph.sennhauser@gmail.com \
--cc=richard@nod.at \
--cc=wigyori@uid0.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox