2001-10-30 19:56:08

by Lars Magne Ingebrigtsen

[permalink] [raw]
Subject: nfs_lookup_validate and dud inodes

I have an nfs server and a diskless client, both running 2.2.19 under
Debian. If I update files on the server, sometimes the client gets
confused about some files, and stays confused. For instance:

[larsi@sparky ~]$ ls -l /lib/libe2*
ls: /lib/libe2p.so.2: Input/output error
-rw-r--r-- 1 root root 13400 Sep 22 17:15 /lib/libe2p.so.2.3

This is what it looks like on the server:

[larsi@quimbies ~]$ ls -l /tftpboot/sparky/lib/libe2p.so.2*
lrwxrwxrwx 1 root root 13 Oct 30 20:23 /tftpboot/sparky/lib/libe2p.so.2 -> libe2p.so.2.3
-rw-r--r-- 1 root root 13400 Sep 22 17:15 /tftpboot/sparky/lib/libe2p.so.2.3

So the error message is when trying to access the symlink.

If I tell the nfs client to output debug messages:

# echo 65535 > /proc/sys/sunrpc/nfs_debug

I then get the following output:

nfs_lookup_validate: lib/libe2p.so.2 has dud inode
NFS: put_inode(1/1912607313)
NFS: lookup(lib/libe2p.so.2)
NFS call lookup libe2p.so.2
NFS reply lookup: 0
NFS: nfs_fhget(lib/libe2p.so.2 fileid=1912607313)
NFS: __nfs_fhget(1/1912607313 ct=0)
NFS call lookup n
NFS reply lookup: 0

(I think this is the relevant part; it spews out quite a lot of data.)

There are no error messages in any of the log files on the server.

Is this a known bug?

--
(domestic pets only, the antidote for overdose, milk.)
[email protected] * Lars Magne Ingebrigtsen


2001-10-30 22:05:44

by Trond Myklebust

[permalink] [raw]
Subject: Re: nfs_lookup_validate and dud inodes

>>>>> " " == Lars Magne Ingebrigtsen <[email protected]> writes:

> [larsi@quimbies ~]$ ls -l /tftpboot/sparky/lib/libe2p.so.2*
> lrwxrwxrwx 1 root root 13 Oct 30 20:23
> /tftpboot/sparky/lib/libe2p.so.2 -> libe2p.so.2.3 -rw-r--r-- 1
> root root 13400 Sep 22 17:15 /tftpboot/sparky/lib/libe2p.so.2.3

> So the error message is when trying to access the symlink.

<snip>

> Is this a known bug?

Known and fixed in the 2.2.20-pre series. It's just that the symlink
code in 2.2.19 doesn't call nfs_revalidate_inode() in order to verify
data cache consistency.

Cheers,
Trond