Re: [PATCH 16/23] initramfs: simplify clean_rootfs

From: Marek Szyprowski
Date: Fri Jul 17 2020 - 16:55:56 EST


Hi Christoph,

On 14.07.2020 21:04, Christoph Hellwig wrote:
> Just use d_genocide instead of iterating through the root directory with
> cumbersome userspace-like APIs. This also ensures we actually remove files
> that are not direct children of the root entry, which the old code failed
> to do.
>
> Fixes: df52092f3c97 ("fastboot: remove duplicate unpack_to_rootfs()")
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>

This patch breaks initrd support ;-(

I use initrd to deploy kernel modules on my test machines. It was
automatically mounted on /initrd. /lib/modules is just a symlink to
/initrd. I know that initrd support is marked as deprecated, but it
would be really nice to give people some time to update their machines
before breaking the stuff.

Here is the log:

Kernel image @ 0x40007fc0 [ 0x000000 - 0x6dd9c8 ]
## Flattened Device Tree blob at 41000000
ÂÂ Booting using the fdt blob at 0x41000000
ÂÂ Loading Ramdisk to 4de3c000, end 50000000 ... OK
ÂÂ Loading Device Tree to 4de2d000, end 4de3b206 ... OK

Starting kernel ...

[ÂÂÂ 0.000000] Booting Linux on physical CPU 0x900
...

[ÂÂÂ 0.000000] Kernel command line: root=PARTLABEL=rootfs rootwait
console=tty1 console=ttySAC2,115200n8 earlycon rootdelay=2
...

[ÂÂÂ 1.853631] Trying to unpack rootfs image as initramfs...
[ÂÂÂ 1.858661] rootfs image is not initramfs (invalid magic at start of
compressed archive); looks like an initrd
...
[ÂÂÂ 2.204776] Freeing initrd memory: 34576K

...

[ÂÂÂ 4.635360] Warning: unable to open an initial console.
[ÂÂÂ 4.640706] Waiting 2 sec before mounting root device...
...
[ÂÂÂ 6.776007] Failed to create /dev/root: -2
[ÂÂÂ 6.778989] VFS: Cannot open root device "PARTLABEL=rootfs" or
unknown-block(179,6): error -2
[ÂÂÂ 6.787200] Please append a correct "root=" boot option; here are the
available partitions:
[ÂÂÂ 6.795693] 0100ÂÂÂÂÂÂÂÂÂÂ 65536 ram0
[ÂÂÂ 6.795697]Â (driver?)
[ÂÂÂ 6.801459] 0101ÂÂÂÂÂÂÂÂÂÂ 65536 ram1
[ÂÂÂ 6.801462]Â (driver?)
[ÂÂÂ 6.807532] 0102ÂÂÂÂÂÂÂÂÂÂ 65536 ram2
[ÂÂÂ 6.807535]Â (driver?)
[ÂÂÂ 6.813674] 0103ÂÂÂÂÂÂÂÂÂÂ 65536 ram3
[ÂÂÂ 6.813677]Â (driver?)
[ÂÂÂ 6.819760] 0104ÂÂÂÂÂÂÂÂÂÂ 65536 ram4
[ÂÂÂ 6.819763]Â (driver?)
[ÂÂÂ 6.832610] 0105ÂÂÂÂÂÂÂÂÂÂ 65536 ram5
[ÂÂÂ 6.832613]Â (driver?)
[ÂÂÂ 6.848685] 0106ÂÂÂÂÂÂÂÂÂÂ 65536 ram6
[ÂÂÂ 6.848688]Â (driver?)
[ÂÂÂ 6.864590] 0107ÂÂÂÂÂÂÂÂÂÂ 65536 ram7
[ÂÂÂ 6.864593]Â (driver?)
[ÂÂÂ 6.880504] 0108ÂÂÂÂÂÂÂÂÂÂ 65536 ram8
[ÂÂÂ 6.880507]Â (driver?)
[ÂÂÂ 6.896248] 0109ÂÂÂÂÂÂÂÂÂÂ 65536 ram9
[ÂÂÂ 6.896251]Â (driver?)
[ÂÂÂ 6.911828] 010aÂÂÂÂÂÂÂÂÂÂ 65536 ram10
[ÂÂÂ 6.911831]Â (driver?)
[ÂÂÂ 6.927447] 010bÂÂÂÂÂÂÂÂÂÂ 65536 ram11
[ÂÂÂ 6.927450]Â (driver?)
[ÂÂÂ 6.942976] 010cÂÂÂÂÂÂÂÂÂÂ 65536 ram12
[ÂÂÂ 6.942979]Â (driver?)
[ÂÂÂ 6.958190] 010dÂÂÂÂÂÂÂÂÂÂ 65536 ram13
[ÂÂÂ 6.958193]Â (driver?)
[ÂÂÂ 6.973205] 010eÂÂÂÂÂÂÂÂÂÂ 65536 ram14
[ÂÂÂ 6.973208]Â (driver?)
[ÂÂÂ 6.988105] 010fÂÂÂÂÂÂÂÂÂÂ 65536 ram15
[ÂÂÂ 6.988108]Â (driver?)
[ÂÂÂ 7.002897] b300ÂÂÂÂÂÂÂ 15388672 mmcblk0
[ÂÂÂ 7.002901]Â driver: mmcblk
[ÂÂÂ 7.018061]ÂÂ b301ÂÂÂÂÂÂÂÂÂÂÂ 8192 mmcblk0p1
654b73ea-7c04-c24d-9642-2a186649605c
[ÂÂÂ 7.018064]
[ÂÂÂ 7.035359]ÂÂ b302ÂÂÂÂÂÂÂÂÂÂ 61440 mmcblk0p2
7ef6fb83-0d6c-8c44-826b-ad11df290e0c
[ÂÂÂ 7.035362]
[ÂÂÂ 7.052589]ÂÂ b303ÂÂÂÂÂÂÂÂÂ 102400 mmcblk0p3
34883856-7d52-d548-a196-718efbd06876
[ÂÂÂ 7.052592]
[ÂÂÂ 7.069744]ÂÂ b304ÂÂÂÂÂÂÂÂÂ 153600 mmcblk0p4
8d4410d0-a4ff-c447-abb9-73350dcdd2d6
[ÂÂÂ 7.069747]
[ÂÂÂ 7.086888]ÂÂ b305ÂÂÂÂÂÂÂÂ 1572864 mmcblk0p5
485c2c17-a9e8-9c45-bb68-e0748a2bb1f1
[ÂÂÂ 7.086890]
[ÂÂÂ 7.103991]ÂÂ b306ÂÂÂÂÂÂÂÂ 3072000 mmcblk0p6
7fb2bbf3-e064-2343-b169-e69c18dbb43e
[ÂÂÂ 7.103993]
[ÂÂÂ 7.121290]ÂÂ b307ÂÂÂÂÂÂÂ 10413039 mmcblk0p7
b0ee9150-6b6a-274b-9ec3-703d29072555
[ÂÂÂ 7.121292]
[ÂÂÂ 7.138722] Kernel panic - not syncing: VFS: Unable to mount root fs
on unknown-block(179,6)
[ÂÂÂ 7.151482] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
5.8.0-rc5-00064-g38d014f6d446 #8823
[ÂÂÂ 7.164026] Hardware name: Samsung Exynos (Flattened Device Tree)
[ÂÂÂ 7.174556] [<c011188c>] (unwind_backtrace) from [<c010d27c>]
(show_stack+0x10/0x14)
[ÂÂÂ 7.186799] [<c010d27c>] (show_stack) from [<c05182e4>]
(dump_stack+0xbc/0xe8)
[ÂÂÂ 7.198533] [<c05182e4>] (dump_stack) from [<c01272e0>]
(panic+0x128/0x354)
[ÂÂÂ 7.210002] [<c01272e0>] (panic) from [<c1001580>]
(mount_block_root+0x1a8/0x240)
[ÂÂÂ 7.221961] [<c1001580>] (mount_block_root) from [<c1001738>]
(mount_root+0x120/0x13c)
[ÂÂÂ 7.234325] [<c1001738>] (mount_root) from [<c10018ac>]
(prepare_namespace+0x158/0x194)
[ÂÂÂ 7.246751] [<c10018ac>] (prepare_namespace) from [<c0ab7684>]
(kernel_init+0x8/0x118)
[ÂÂÂ 7.259086] [<c0ab7684>] (kernel_init) from [<c0100114>]
(ret_from_fork+0x14/0x20)tatic void __init populate_initrd_image(char *err)

Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland