NFS: Hash collision with the root inode ???

Matthias Urlichs (smurf@noris.de)
Wed, 2 Sep 1998 16:32:22 +0200


Hi,

I have a VERY strange NFS error here.

Whenever I lstat() a certain file across NFS, the call succeeds, but all
accesses afterwards return EIO. The kernel logs:

__nfs_fhget: inode 1234567 busy, i_count=2, i_nlink=18
__nfs_fhget: inode 1234567 still busy, i_count=2
__nfs_fhget: killing /// filehandle

After this, the mount is dead; everything afterwards returns -EIO.
This happens only with this one specific file and is 100% reproducible.

Examining the file stats with "strace -v -e=lstat ls FILE" did not show
anything 'interesting'; file modes etc. are all correct and look basically
the same as any other file in that directory.

Suspicion: Does the NFS server hash the file onto the root directory???
If so, this is a major problem with the user-mode NFS server, right?
ARRGH!

A "good" file lookup:

16:20:50.140766 play.noris.de.24af0000 > dbase.noris.net.nfs: 108 lookup fh Unknown/1 "153.2.gz"
4500 0088 7f23 0000 4011 0b64 c18d 36a0
c18d 3623 031f 0801 0074 9b65 24af 0000
0000 0000 0000 0002 0001 86a3 0000 0002
0000 0004 0000 0001 0000 0018 0000 0ab0
0000 0004 706c 6179 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 cbff 3f21
0623 3114 7b27 2500 0000 0000

16:20:50.140766 dbase.noris.net.nfs > play.noris.de.24af0000: reply ok 128 lookup [|nfs]
4500 009c 23c7 0000 3f11 67ac c18d 3623
c18d 36a0 0801 031f 0088 5020 24af 0000
0000 0001 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 2400 0021 0723 3114
7b27 252a 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0001 0000 81b0
0000 0001 0000 000d 0000 005a 0002 3f0f
0000 1000 0000 0000 0000 0124 0000 0001

The "bad" file lookup:

16:20:54.240766 play.noris.de.25af0000 > dbase.noris.net.nfs: 108 lookup fh Unknown/1 "154.2.gz"
4500 0088 7f25 0000 4011 0b62 c18d 36a0
c18d 3623 031f 0801 0074 9961 25af 0000
0000 0000 0000 0002 0001 86a3 0000 0002
0000 0004 0000 0001 0000 0018 0000 0ab4
0000 0004 706c 6179 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 cbff 3f21
0623 3114 7b27 2500 0000 0000

16:20:54.240766 dbase.noris.net.nfs > play.noris.de.25af0000: reply ok 128 lookup [|nfs]
4500 009c 2461 0000 3f11 6712 c18d 3623
c18d 36a0 0801 031f 0088 670a 25af 0000
0000 0001 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 1000 0021 0723 3114
7b27 252a 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0001 0000 81b0
0000 0001 0000 000d 0000 005a 0001 3bb8
0000 1000 0000 0000 0000 00a4 0000 0001

This is a simple UDP-based NFS mount to rpc.nfsd, i.e. nothing fancy at
all.

Ideas, anybody?

-- 
Matthias Urlichs      |        noris network GmbH      |       smurf@noris.de
The quote was selected randomly. Really.    |      http://www.noris.de/~smurf/
-- 
Murphy's Law, that brash proletarian restatement of Godel's Theorem...
                                -- Thomas Pynchon, Gravity's Rainbow

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html