Re: [PATCH v3 1/2] init/initramfs.c: do unpacking asynchronously

From: Luis Chamberlain
Date: Tue Jul 27 2021 - 09:54:47 EST


On Tue, Jul 27, 2021 at 09:31:54AM +0200, Bruno Goncalves wrote:
> On Mon, Jul 26, 2021 at 1:46 PM Rasmus Villemoes
> <linux@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > On 24/07/2021 09.46, Alexander Egorenkov wrote:
> > > Hello,
> > >
> > > since e7cb072eb988 ("init/initramfs.c: do unpacking asynchronously"), we
> > > started seeing the following problem on s390 arch regularly:
> > >
> > > [ 5.039734] wait_for_initramfs() called before rootfs_initcalls

So some context here, which might help.

The initramfs_cookie is initialized until a a rootfs_initcall() is
called, in this case populate_rootfs(). The code is small, so might
as well include it:

static int __init populate_rootfs(void)
{
initramfs_cookie = async_schedule_domain(do_populate_rootfs, NULL,
&initramfs_domain);
if (!initramfs_async)
wait_for_initramfs();
return 0;
}
rootfs_initcall(populate_rootfs);

The warning you see comes from a situation where a wait_for_initramfs()
gets called but we haven't yet initialized initramfs_cookie. There are
only a few calls for wait_for_initramfs() in the kernel, and the only
thing I can think of is that somehow s390 may rely on a usermode helper
early on, but not every time.

What umh calls does s390 issue?

> Unfortunately, we haven't been able to find the root cause, but since
> June 23rd we haven't hit this panic...
>
> Btw, this panic we were hitting only when testing kernels from "scsi"
> and "block" trees.

Do you use drdb maybe?

Luis