2002-09-03 16:47:02

by Jakob Sandgren

[permalink] [raw]
Subject: 2.4.18 --> 2.4.19. Ramdisk requires floppy?

Hi,

I've noticed that the 2.4.19 version of "prepare_namespace"
(init/do_mounts.c) not allows you to mount a non floppy as a
ramdisk(?). This has changed since 2.4.18 (split of main.c ->
{do_mounts,main}.c).

2.4.18 does a very simple check (below):

--- 2.4.18 ---
#ifdef CONFIG_BLK_DEV_RAM
#ifdef CONFIG_BLK_DEV_INITRD
if (mount_initrd)
initrd_load();
else
#endif
rd_load();
#endif
--- 2.4.18 ---

however, in 2.4.19 it just tries to load a ramdisk if it's on a
floppy. Why? There may still be a ramdisk on an other device, NOT
using initrd.

--- 2.4.19 ---
if (mount_initrd) {
if (initrd_load() && ROOT_DEV != MKDEV(RAMDISK_MAJOR, 0)) {
handle_initrd();
goto out;
}
} else if (is_floppy && rd_doload && rd_load_disk(0))
ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
mount_root();
out:
--- 2.4.19 ---


Best Regards,
Jakob Sandgren
South Pole AB
--
Jakob Sandgren South Pole AB
Phone: +46 8 51420420 Gelbjutarv?gen 5
Fax: +46 8 51420429 SE - 17148 Solna
e-mail: [email protected] http://www.southpole.se


2002-09-04 02:12:17

by H. Peter Anvin

[permalink] [raw]
Subject: Re: 2.4.18 --> 2.4.19. Ramdisk requires floppy?

Followup to: <[email protected]>
By author: [email protected] (Jakob Sandgren)
In newsgroup: linux.dev.kernel
>
> Hi,
>
> I've noticed that the 2.4.19 version of "prepare_namespace"
> (init/do_mounts.c) not allows you to mount a non floppy as a
> ramdisk(?). This has changed since 2.4.18 (split of main.c ->
> {do_mounts,main}.c).
>
> 2.4.18 does a very simple check (below):
>
> --- 2.4.18 ---
> #ifdef CONFIG_BLK_DEV_RAM
> #ifdef CONFIG_BLK_DEV_INITRD
> if (mount_initrd)
> initrd_load();
> else
> #endif
> rd_load();
> #endif
> --- 2.4.18 ---
>
> however, in 2.4.19 it just tries to load a ramdisk if it's on a
> floppy. Why? There may still be a ramdisk on an other device, NOT
> using initrd.
>

You can't search every device hunting for a ramdisk. rd_load() is
ancient cruft that should be nuked, and will be pushed into userspace
as part of the initramfs/early userspace work.

-hpa
--
<[email protected]> at work, <[email protected]> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt <[email protected]>

2002-09-04 09:27:28

by Jakob Sandgren

[permalink] [raw]
Subject: Re: 2.4.18 --> 2.4.19. Ramdisk requires floppy?

On Tue, Sep 03, 2002 at 07:16:38PM -0700, H. Peter Anvin wrote:
> Followup to: <[email protected]>
> By author: [email protected] (Jakob Sandgren)
> In newsgroup: linux.dev.kernel
> >
> > Hi,
> >
> > I've noticed that the 2.4.19 version of "prepare_namespace"
> > (init/do_mounts.c) not allows you to mount a non floppy as a
> > ramdisk(?). This has changed since 2.4.18 (split of main.c ->
> > {do_mounts,main}.c).
> >


> >
> > however, in 2.4.19 it just tries to load a ramdisk if it's on a
> > floppy. Why? There may still be a ramdisk on an other device, NOT
> > using initrd.
> >
>
> You can't search every device hunting for a ramdisk. rd_load() is
> ancient cruft that should be nuked, and will be pushed into userspace
> as part of the initramfs/early userspace work.


I agree, but why is there such a check for mounting the root file
system during startup. After removing the check from
prepare_namespace(), rd_load_image() will still get called with
"/dev/root" as argument and "/dev/root" should allready be pointing to
ROOT_DEV. The target I'm working on is using a ramdisk for it's root
file system, however, it's not using initrd.



--- do_mounts.c-orig Wed Sep 4 11:01:15 2002
+++ do_mounts.c Wed Sep 4 11:02:11 2002
@@ -828,7 +828,6 @@
*/
void prepare_namespace(void)
{
- int is_floppy = MAJOR(ROOT_DEV) == FLOPPY_MAJOR;
#ifdef CONFIG_ALL_PPC
extern void arch_discover_root(void);
arch_discover_root();
@@ -852,7 +851,7 @@
handle_initrd();
goto out;
}
- } else if (is_floppy && rd_doload && rd_load_disk(0))
+ } else if (rd_doload && rd_load_disk(0))
ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
mount_root();
out:





Best Regards,
Jakob Sandgren
South Pole AB

--
Jakob Sandgren South Pole AB
Phone: +46 8 51420420 Gelbjutarv?gen 5
Fax: +46 8 51420429 SE - 17148 Solna
e-mail: [email protected] http://www.southpole.se