Oh, I just forgot to mention that the kernel is 2.4.19 and gcc version is 3.2. I also used uml to trace it, and I found that the 'magic' happens within get_new_inode(): .... inode->i_sb = sb; ... if (sb->s_op->read_inode2) sb->s_op->read_inode2(inode, opaque); else sb->s_op->read_inode(inode); just before sb->s_op_read_inode() is executed, inode->i_sb is still sb. But once the function (which is snet_read_inode()) is called, inode->i_sb just magically point to some other place. rz -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/