On Mon, Jul 6, 2009 at 8:45 PM, Donato Capitella<d.capitella@xxxxxx> wrote: [ Please keep kernelnewbies in cc while replying ] > Well, I tried to initialize the inode 3 with debugfs, but nothing > changed. I just set the file mode and the creation but when I try to > read the inode with the ext3_iget() function, somehow it fails and > dereferences a NULL pointer :( What pointer is NULL ? ext3_iget doesn't return a NULL pointer (either it returns a valid inode pointer or an errno typecasted as ptr). Where is it crashing ? What are you using the reserved inode for ? > > Maybe I am missing something. Unless you tell us the complete picture it might be hard to identify. A snippet of code would definitely help, but I am pretty sure that it is because you don't have a valid inode structure on disk and you need to initialize it appropriately. > Which fields do I need to initialize in > order for this to work? Have you tried the same thing on ext2 first ? I would suggest doing that because ext2_iget() is much simpler than ext3_iget(). While setting i_mode you also need to take care that mode also consists of filetype apart from permissions. You also may have to initialize i_nlinks appropriately >Shouldn't be this hard to just read an inode... It isn't but you need to create a valid inode before that. Thanks - Manish > > Thanks again, > Donato > > > On Sun, 2009-07-05 at 22:37 +0530, Manish Katiyar wrote: >> On Sun, Jul 5, 2009 at 10:28 PM, Donato Capitella<d.capitella@xxxxxx> wrote: >> > Well, as it's a reserved inode, I didn't create it. stat <3> shows that >> > the inode has bad type... so this might be the problem. But how am I >> > supposed to initialize the inode fields if I can't read it? >> >> What are you reserving it for ? Note that the reserved inodes today (2 >> for root) & (8 for journal commonly) both are initialized during mkfs. >> You also need to do something similar. Depending on what you are using >> it for you may need to initialize it properly. To do that you can do >> the following :- >> >> a) Either write a simple C program to write the fields properly at >> correct offset. >> b) Hack the code of mkfs to include your inode too. >> c) Use debugfs to change the contents of inode 3. This is the easiest >> option but I am not sure if you can modify all the fields of the >> inode, so it depends on what you need. >> >> Thanks - >> Manish >> >> > >> > >> > On Sun, 2009-07-05 at 22:06 +0530, Manish Katiyar wrote: >> >> On Sun, Jul 5, 2009 at 7:30 PM, Donato Capitella<d.capitella@xxxxxx> wrote: >> >> > Hi there, >> >> > I need some help with a patch to the ext3 filesystem I'm developing. I'm >> >> > completelly new to kernel programming and I need to understand >> >> > practically how to use one of the ext3 reserved inode for storing a log. >> >> > >> >> > I thought it would be just as easy as getting the inode with the >> >> > ext3_iget() function, but it doesn't seem to be the case. For example, >> >> > if I try to load the third reserved inode like this : >> >> > >> >> > inode = ext3_iget(sb, 3); >> >> > >> >> > ext3_iget() fails somehow and crashes the process with a NULL pointer >> >> > reference. What am I missing here? >> >> Have you created the inode 3 ? What entries does it have ? What does >> >> "stat <3>" show from the debugfs ? >> >> >> >> Thanks - >> >> Manish >> >> >> >> >> >> > How do you use a reserved inode? Can >> >> > anybody point to some documentation or project that uses reserved >> >> > inodes? >> >> > >> >> > I'm really stuck :( >> >> > >> >> > Thanks a lot, >> >> > Donato Capitella >> >> > >> >> > >> >> > >> >> > -- >> >> > To unsubscribe from this list: send an email with >> >> > "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx >> >> > Please read the FAQ at http://kernelnewbies.org/FAQ >> >> > >> >> > >> >> >> >> >> >> >> > >> > >> >> >> > > -- Thanks - Manish -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ