Re: 2.1.47 oops (crash)

Linus Torvalds (
Wed, 30 Jul 1997 16:23:23 -0700 (PDT)

On Thu, 31 Jul 1997, Martin von Loewis wrote:
> You've probably noticed it: some of the oopses were related to amd
> umounting some file system, which then would case a negative d_count
> on some totally unrelated dentry.
> Also, there was the report of ext2 inodes surviving an umount and
> suddenly re-appearing on another file system.

Ahh, you're right.

> Something is wrong with unmounting. Here's a theory:
> - iput removes the inode from the hash list only if nlink is zero
> - iget, if the inode is not found, invokes get_new_inode
> - get_new_inode, under certain circumstances, searches the hash list
> - find_inode on the hash list searches for identical superblock and
> inode number

I just found it - when we're invalidating inodes at unmount time, we do
not invalidate any inode that has a non-zero "i_nrpages". But we really
REALLY should do that.

We do actually want to leave inodes with a non-zero i_nrpages alone under
normal circumstances, but unmounting is definitely not a normal