Thread (1 message) 1 message, 1 author, 2005-04-13

Booting from cramfs with 2.6.11

From: Pawel Studencki <hidden>
Date: 2005-04-13 15:55:06

 hallo,
  
 after solving some problems I got 2.6.11 kernel
 booting on my board with
 8xx.
 Now I'm trying to mount cramfs root filesystem from
 flash. I've debuged this
 until inode->i_op->lookup in real_lookup function -
 I hoped to see here
 cramfs_lookup, but simple_lookup was called instead
 of that...
 
 From the beginning: mounting process starts in
 do_mount, where with call
 path_lookup it is looked for mount point. Actually
 it is function
 link_path_walk, where do_lookup is called - it
 returns a dentry using
 function real_lookup (and i_op->lookup is equal
 simple_lookup). inode of the
 returned dentry is NULL. So link_path_walk returns
 -ENOENT (-2), the same
 value returns than path_lookup and do_mount.
 
 I thought, the problem is wrong i_op->lookup
 function (simple_lookup instead
 of cramfs_looup). But the right values will be set
 first in do_new_mount
 calling do_kern_mount.
 
 here is a simple draft to help you understand...
 
 sys_mount(name, "/root", fs, flags, data);  - in my
 case fs is cramfs.
 |
 |-->do_mount()
 	|
 	|-- some checks...
 	|
 	|-- path_lookup()
 	|		|
 	|		|-- link_path_walk() (fs/namei.c)
 	|				|
 	|				|-- do_lookup() (returns
 next.dentry)
 	|				|	|
 	|				|	|-- __d_lookup
 	|				|	|
 	|				|	|-- real_lookup(nd->dentry,
 name, nd);
 	|				|	   |
 	|				|	   |-- dentry =
 d_alloc(parent, name);
 	
 (dentry->d_inode=NULL)
 	|				|	   |
 	|				|	   |- result =
 dir->i_op->lookup(dir, dentry, nd);
 							 !!! result is a
 dentry with inode = NULL !!!	
 	|				|
 	|				|
 	|				|
 	|				|
 	|				|
 	|				|-- follow_mount()
 	|				|
 	|				|
 	|				| inode = next.dentry->d_inode;
 (inode is NULL!!!!)
       |          	
 	|
 	|
 	|-- do_new_mount()
 		|
 		|-- do_kern_mount() (fs/super.c)
 			|
 			|-- type->get_sb (type is cramfs, and first
 get_sb
 sets i_op....
 						see fs/cramfs/inode.c )
 
 
 I don't understand all dependances, so perhaps
 someone could give me a hint,
 what is wrong here...is this normal that a dentry
 hat inode NULL? should the
 function cramfs_lookup be called here? If so, is
 there another place, where
 i_op is set?
 
 best regards 
 
 Pawel
 
 

----------------------------------------------------------------------------
------
Linux version 2.6.11 (nb221330@nb2g156c) (gcc
version 3.3.4) #29 Wed Apr 13
14:38:33 WEST 2005
Built 1 zonelists
Kernel command line: console=ttyCPM0, 57600
root=/dev/mtdblock1
rootfstype=cramfs ro
PID hash table entries: 128 (order: 7, 2048 bytes)
Decrementer Frequency = 187500000/60
m8xx_wdt: wdt disabled (SYPCR: 0xFFFFFF88)
Console: colour dummy device 80x25
Dentry cache hash table entries: 4096 (order: 2,
16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192
bytes)
Memory: 14748k available (996k kernel code, 372k
data, 60k init, 0k highmem)
Mount-cache hash table entries: 512 (order: 0, 4096
bytes)
NET: Registered protocol family 16
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat,
Inc.
Serial: CPM driver $Revision: 0.01 $
ttyCPM0 at MMIO 0xff000a60 (irq = 43) is a CPM UART
io scheduler noop registered
loop: loaded (max 8 devices)
physmap flash device: 400000 at ffc00000
phys_mapped_flash: Found 1 x16 devices at 0x0 in
16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due
to code brokenness.
Creating 5 MTD partitions on "phys_mapped_flash":
0x00000000-0x000d0000 : "Kernel"
mtd: Giving out device 0 to Kernel
0x000d0000-0x001d0000 : "RootFS"
mtd: Giving out device 1 to RootFS
0x001d0000-0x00300000 : "ApplFS1"
mtd: Giving out device 2 to ApplFS1
0x00300000-0x00330000 : "U-Boot"
mtd: Giving out device 3 to U-Boot
0x00330000-0x00400000 : "ApplFS2"
mtd: Giving out device 4 to ApplFS2
slram: not enough parameters.

VFS: Cannot open root device "mtdblock1" or
unknown-block(31,1)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount
root fs on
unknown-block(31,1)
----------------------------------------------------------------------------


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help