2000-12-07 20:24:04

by Justin Carlson

[permalink] [raw]
Subject: Ramdisk root filesystem strangeness

Am in the midst of bringing up the kernel on a new MIPS variant, and I'm tryingthe mount a statically linked ramdisk as the root filesystem.

Note, this is NOT using initrd support, I really want to use a ramdisk as my
final filesystem, not as an intermediate step in booting the system.

In blkdev_get(), called from mount_root(), there's some code that grabs
an empty inode, sets up i_rdev, and calls open() for the root device
with the caveat that open() must not examine anything except i_rdev.

in rd_open, though, there's this code snippet:

/*
* Immunize device against invalidate_buffers() and prune_icache().
*/
if (rd_inode[DEVICE_NR(inode->i_rdev)] == NULL) {
if (!inode->i_bdev)
return -ENXIO;

I'm hitting the -ENXIO return, which is based on an uninitialized field of the
inode structure.

Being relatively new to the code base, I'm not sure what this code is trying to
do, nor how to fix it. Any suggestions?

The code involved is from the MIPS CVS repository at oss.sgi.com, which was
synced in the past couple days from 2.4.0test11

-Justin


2000-12-07 22:21:00

by Vivek Dasgupta

[permalink] [raw]
Subject: RE: Ramdisk root filesystem strangeness

Hi

I m sorry if this question doesn't belong to this list. But I couldn't
access the linux-admin list.

Is there support for using RAMDISK as the final root file system
in 2.2.x versions, or is it there in the 2.4.x versions.

I am trying to bring up linux on a diskless server which initially mounts
root FS thru NFS. Then I want to load HDD image to a RAMDISK and use it as
the final root filesystem.

I am not sure whether it is a ready supported or any kernel change will be
required for this?

Any pointers would be helpful.

thanks

vivek

-----Original Message-----
From: Justin Carlson [mailto:[email protected]]
Sent: Thursday, December 07, 2000 11:52 AM
To: [email protected]
Subject: Ramdisk root filesystem strangeness


Am in the midst of bringing up the kernel on a new MIPS variant, and I'm
tryingthe mount a statically linked ramdisk as the root filesystem.

Note, this is NOT using initrd support, I really want to use a ramdisk as my
final filesystem, not as an intermediate step in booting the system.

In blkdev_get(), called from mount_root(), there's some code that grabs
an empty inode, sets up i_rdev, and calls open() for the root device
with the caveat that open() must not examine anything except i_rdev.

in rd_open, though, there's this code snippet:

/*
* Immunize device against invalidate_buffers() and prune_icache().
*/
if (rd_inode[DEVICE_NR(inode->i_rdev)] == NULL) {
if (!inode->i_bdev)
return -ENXIO;

I'm hitting the -ENXIO return, which is based on an uninitialized field of
the
inode structure.

Being relatively new to the code base, I'm not sure what this code is trying
to
do, nor how to fix it. Any suggestions?

The code involved is from the MIPS CVS repository at oss.sgi.com, which was
synced in the past couple days from 2.4.0test11

-Justin

2000-12-08 01:47:25

by Jeff Chua

[permalink] [raw]
Subject: RE: Ramdisk root filesystem strangeness

>Is there support for using RAMDISK as the final root file system
>in 2.2.x versions, or is it there in the 2.4.x versions.

Works with 2.2x and up to 2.4.0 test12-pre3.bz2

Make sure you specify the following if you're using loadlin

root=/dev/ram

With anything above test12-pre3.bz2, you'll ran into the following problem

kernel BUG at buffer.c:827!
invalid operand: 0000
CPU: 0
EIP: 0010:[<c0135e13>]
EFLAGS: 00010286


Jeff