All of lore.kernel.org
 help / color / mirror / Atom feed
From: akpm@linux-foundation.org
To: daniel.thompson@linaro.org, f.fainelli@gmail.com,
	mm-commits@vger.kernel.org, mmarek@suse.cz, npiggin@gmail.com,
	pebolle@tiscali.nl, ppandit@redhat.com
Subject: [merged] initramfs-fix-disabling-of-initramfs-and-its-compression.patch removed from -mm tree
Date: Mon, 05 Jun 2017 12:02:45 -0700	[thread overview]
Message-ID: <20170605190245.HZ0qTLX6a%akpm@linux-foundation.org> (raw)


The patch titled
     Subject: initramfs: fix disabling of initramfs (and its compression)
has been removed from the -mm tree.  Its filename was
     initramfs-fix-disabling-of-initramfs-and-its-compression.patch

This patch was dropped because it was merged into mainline or a subsystem tree

------------------------------------------------------
From: Florian Fainelli <f.fainelli@gmail.com>
Subject: initramfs: fix disabling of initramfs (and its compression)

db2aa7fd15e8 ("initramfs: allow again choice of the embedded initram
compression algorithm") introduced the possibility to select the initramfs
compression algorithm from Kconfig and while this is a nice feature it
broke the use case described below.

Here is what my build system does:

- kernel is initially configured not to have an initramfs included

- build the user space root file system

- re-configure the kernel to have an initramfs included
  (CONFIG_INITRAMFS_SOURCE="/path/to/romfs") and set relevant
  CONFIG_INITRAMFS options, in my case, no compression option
  (CONFIG_INITRAMFS_COMPRESSION_NONE)

- kernel is re-built with these options -> kernel+initramfs image is
  copied

- kernel is re-built again without these options -> kernel image is
  copied

Building a kernel without an initramfs means setting this option:

CONFIG_INITRAMFS_SOURCE="" (and this one only)

whereas building a kernel with an initramfs means setting these options:

CONFIG_INITRAMFS_SOURCE="/home/fainelli/work/uclinux-rootfs/romfs
/home/fainelli/work/uclinux-rootfs/misc/initramfs.dev"
CONFIG_INITRAMFS_ROOT_UID=1000
CONFIG_INITRAMFS_ROOT_GID=1000
CONFIG_INITRAMFS_COMPRESSION_NONE=y
CONFIG_INITRAMFS_COMPRESSION=""

db2aa7fd15e85 ("initramfs: allow again choice of the embedded initram
compression algorithm") is problematic because
CONFIG_INITRAMFS_COMPRESSION which is used to determine the
initramfs_data.cpio extension/compression is a string, and due to how
Kconfig works it will evaluate in order, how to assign it.

Setting CONFIG_INITRAMFS_COMPRESSION_NONE with CONFIG_INITRAMFS_SOURCE=""
cannot possibly work (because of the depends on INITRAMFS_SOURCE!=""
imposed on CONFIG_INITRAMFS_COMPRESSION ) yet we still get
CONFIG_INITRAMFS_COMPRESSION assigned to ".gz" because CONFIG_RD_GZIP=y is
set in my kernel, even when there is no initramfs being built.

So we basically end-up generating two initramfs_data.cpio* files, one
without extension, and one with .gz.  This causes usr/Makefile to track
usr/initramfs_data.cpio.gz, and not usr/initramfs_data.cpio anymore, that
is also largely problematic after 9e3596b0c6539e ("kbuild: initramfs
cleanup, set target from Kconfig") because we used to track all possible
initramfs_data files in the $(targets) variable before that commit.

The end result is that the kernel with an initramfs clearly does not
contain what we expect it to, it has a stale initramfs_data.cpio file
built into it, and we keep re-generating an initramfs_data.cpio.gz file
which is not the one that we want to include in the kernel image proper.

The fix consists in hiding CONFIG_INITRAMFS_COMPRESSION when
CONFIG_INITRAMFS_SOURCE="".  This puts us back in a state to the pre-4.10
behavior where we can properly disable and re-enable initramfs within the
same kernel .config file, and be in control of what
CONFIG_INITRAMFS_COMPRESSION is set to.

Fixes: db2aa7fd15e8 ("initramfs: allow again choice of the embedded initram compression algorithm")
Fixes: 9e3596b0c653 ("kbuild: initramfs cleanup, set target from Kconfig")
Link: http://lkml.kernel.org/r/20170521033337.6197-1-f.fainelli@gmail.com
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Acked-by: Nicholas Piggin <npiggin@gmail.com>
Cc: P J P <ppandit@redhat.com>
Cc: Paul Bolle <pebolle@tiscali.nl>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 usr/Kconfig |    1 +
 1 file changed, 1 insertion(+)

diff -puN usr/Kconfig~initramfs-fix-disabling-of-initramfs-and-its-compression usr/Kconfig
--- a/usr/Kconfig~initramfs-fix-disabling-of-initramfs-and-its-compression
+++ a/usr/Kconfig
@@ -220,6 +220,7 @@ config INITRAMFS_COMPRESSION_LZ4
 endchoice
 
 config INITRAMFS_COMPRESSION
+	depends on INITRAMFS_SOURCE!=""
 	string
 	default ""      if INITRAMFS_COMPRESSION_NONE
 	default ".gz"   if INITRAMFS_COMPRESSION_GZIP
_

Patches currently in -mm which might be from f.fainelli@gmail.com are



                 reply	other threads:[~2017-06-05 19:02 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20170605190245.HZ0qTLX6a%akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=daniel.thompson@linaro.org \
    --cc=f.fainelli@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mm-commits@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=npiggin@gmail.com \
    --cc=pebolle@tiscali.nl \
    --cc=ppandit@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.