No, different bug,
Fixed problem is basically what everyone is seeing when they are using
Coda on top of a filesystem that doesn't use generic_file_write. It was
simply there to avoid corrupting the underlying fs.
Your bug is unusual, because it happens during the mount, everybody
else successfully mounted Coda and could read files, it would just die
when trying to write anything.
The bug is triggered because the inode we just got passed from the VFS
has a superblock that has no pointer to the Coda specific info.
If you look at the trace, parts of it look right, but most of it doesn't
make sense, printk never calls back into FS specific code, coda_iget
does not call coda_cnode make, coda_inocmp isn't calling iget4, etc.
If you look at the logic of the mount operation,
coda_read_super
Here we allocate the Coda info and link it to the superblock. If the
allocation fails we return early. An upcall is made to venus to get
the rootfid. Then we call coda_cnode_make, passing it the rootfid
and the initialized superblock.
coda_cnode_make
Makes a second upcall, getting the attributes of the root inode, if
it fails we return. Else it calls coda_iget, passing the superblock,
the rootfid and the attributes.
coda_iget
Calls iget4 passing it the initialized superblock, a hash of the
fid, and a callback function + rootfid to find the real inode.
iget4
Should fail to find the inode, and calls get_new_inode again passing
it the initialized superblock.
get_new_inode
Allocates an inode, initializes inode->i_sb with the passed in
superblock and calls the fs-specific read_inode.
coda_read_inode
Craps out because the inode->i_sb.u.generic_sbp is NULL, wtf?
The only way I can see this happening is if the sb.u.generic_sbp field
is cleared, but it looks like even coda_put_super isn't doing that.
Summary, I'm clueless how this could have happened, and I can't see how it
could happen. Perhaps a patch got botched, or your kernel is mixing up
objects from before the patch with later ones. All those ksyms errors
and the illogical jumps in the trace don't make it look to healthy either.
Try to start from a fresh 2.4.9 tree, apply the ext3 patch and my Coda
patch, add -fs1 to EXTRAVERSION just to force this tree to install it's
modules in a separate directory. Copy the config of your existing tree,
make oldconfig ; make dep ; etc...
Jan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/