[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250929171652.50b7a959.ddiss@suse.de>
Date: Mon, 29 Sep 2025 19:13:16 +1000
From: David Disseldorp <ddiss@...e.de>
To: nschichan@...ebox.fr
Cc: akpm@...ux-foundation.org, andy.shevchenko@...il.com, axboe@...nel.dk,
brauner@...nel.org, cyphar@...har.com, devicetree@...r.kernel.org,
ecurtin@...hat.com, email2tema@...il.com, graf@...zon.com,
gregkh@...uxfoundation.org, hca@...ux.ibm.com, hch@....de,
hsiangkao@...ux.alibaba.com, initramfs@...r.kernel.org, jack@...e.cz,
julian.stecklina@...erus-technology.de, kees@...nel.org,
linux-acpi@...r.kernel.org, linux-alpha@...r.kernel.org,
linux-api@...r.kernel.org, linux-arch@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-block@...r.kernel.org,
linux-csky@...r.kernel.org, linux-doc@...r.kernel.org,
linux-efi@...r.kernel.org, linux-ext4@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-hexagon@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-m68k@...ts.linux-m68k.org,
linux-mips@...r.kernel.org, linux-openrisc@...r.kernel.org,
linux-parisc@...r.kernel.org, linux-riscv@...ts.infradead.org,
linux-s390@...r.kernel.org, linux-sh@...r.kernel.org,
linux-snps-arc@...ts.infradead.org, linux-um@...ts.infradead.org,
linuxppc-dev@...ts.ozlabs.org, loongarch@...ts.linux.dev,
mcgrof@...nel.org, mingo@...hat.com, monstr@...str.eu,
mzxreary@...inter.de, patches@...ts.linux.dev, rob@...dley.net,
safinaskar@...il.com, sparclinux@...r.kernel.org,
thomas.weissschuh@...utronix.de, thorsten.blum@...ux.dev,
torvalds@...ux-foundation.org, tytso@....edu, viro@...iv.linux.org.uk,
x86@...nel.org
Subject: Re: [PATCH-RFC] init: simplify initrd code (was Re: [PATCH RESEND
00/62] initrd: remove classic initrd support).
Hi Nicolas,
On Thu, 25 Sep 2025 15:10:56 +0200, nschichan@...ebox.fr wrote:
> From: Nicolas Schichan <nschichan@...ebox.fr>
>
> - drop prompt_ramdisk and ramdisk_start kernel parameters
> - drop compression support
> - drop image autodetection, the whole /initrd.image content is now
> copied into /dev/ram0
> - remove rd_load_disk() which doesn't seem to be used anywhere.
>
> There is now no more limitation on the type of initrd filesystem that
> can be loaded since the code trying to guess the initrd filesystem
> size is gone (the whole /initrd.image file is used).
>
> A few global variables in do_mounts_rd.c are now put as local
> variables in rd_load_image() since they do not need to be visible
> outside this function.
> ---
>
> Hello,
>
> Hopefully my email config is now better and reaches gmail users
> correctly.
>
> The patch below could probably split in a few patches, but I think
> this simplify the code greatly without removing the functionality we
> depend on (and this allows now to use EROFS initrd images).
>
> Coupled with keeping the function populate_initrd_image() in
> init/initramfs.c, this will keep what we need from the initrd code.
>
> This removes support of loading bzip/gz/xz/... compressed images as
> well, not sure if many user depend on this feature anymore.
>
> No signoff because I'm only seeking comments about those changes right
> now.
>
> init/do_mounts.h | 2 -
> init/do_mounts_rd.c | 243 +-------------------------------------------
> 2 files changed, 4 insertions(+), 241 deletions(-)
This seems like a reasonable improvement to me. FWIW, one alternative
approach to clean up the FS specific code here was proposed by Al:
https://lore.kernel.org/all/20250321020826.GB2023217@ZenIV/
...
> diff --git a/init/do_mounts_rd.c b/init/do_mounts_rd.c
> index ac021ae6e6fa..5a69ff43f5ee 100644
> --- a/init/do_mounts_rd.c
> +++ b/init/do_mounts_rd.c
> @@ -14,173 +14,9 @@
>
> #include <linux/decompress/generic.h>
>
> -static struct file *in_file, *out_file;
> -static loff_t in_pos, out_pos;
> -
> -static int __init prompt_ramdisk(char *str)
> -{
> - pr_warn("ignoring the deprecated prompt_ramdisk= option\n");
> - return 1;
> -}
> -__setup("prompt_ramdisk=", prompt_ramdisk);
> -
> -int __initdata rd_image_start; /* starting block # of image */
> -
> -static int __init ramdisk_start_setup(char *str)
> -{
> - rd_image_start = simple_strtol(str,NULL,0);
> - return 1;
> -}
> -__setup("ramdisk_start=", ramdisk_start_setup);
There are a couple of other places that mention these parameters, which
should also be cleaned up.
...
> static unsigned long nr_blocks(struct file *file)
> {
> - struct inode *inode = file->f_mapping->host;
> -
> - if (!S_ISBLK(inode->i_mode))
> - return 0;
> - return i_size_read(inode) >> 10;
> + return i_size_read(file->f_mapping->host) >> 10;
This should be >> BLOCK_SIZE_BITS, and dropped as a wrapper function
IMO.
Powered by blists - more mailing lists