guy@netapp.com (Guy Harris) writes:
That still doesn't describe the full scenario. If somebody merely writes to a file - in the sense of "does a 'write()' to the file" - that will *NOT* cause ESTALE to occur on other clients - there's no reason for it to occur.
If the full scenario has "writes to a file" meaning "unlinks the file, creates a new file with the same name, and writes to *that* file", that's the scenario I described in earlier mail.
Well, since the file hadn't been recently modified, I wasn't able to come up with any scenario that could apply. It looks more likely that the NetApp was sent an incorrect file handle (or didn't receive the correct one).
What level of consistency checking does NFS v2 over UDP provide?
It may be generally useful for NetApp to publish all of the known cases where different (legitimate to the NFS specification) errors can be returned from Network Appliance servers.
"Different" in the sense of "different from, say, a Sun server"?
"Different" as in "various" or "different types of errors".
I presume "overwritten" here means "removed and rewritten", as per the above.
Yes it does, please forgive my imprecise language.
If the client is assuming that a file with inode number XXXX (as returned by an NFS "getattr" call) is the same file as a file that had inode number XXXX on the same mount from the same client at some point in the past, the client is buggy - it cannot validly assume that, given the scenario I outlined in earlier mail.
I'll ask the local experts about that.
Linux 2.1.x (x > 42) also has a directory/file name cache that hashes names to "dentries" that include a pointer to the inode structure.
- Dan
Well, since the file hadn't been recently modified, I wasn't able to come up with any scenario that could apply. It looks more likely that the NetApp was sent an incorrect file handle (or didn't receive the correct one).
What level of consistency checking does NFS v2 over UDP provide?
"Consistency checking" in what sense?
Linux 2.1.x (x > 42) also has a directory/file name cache that hashes names to "dentries" that include a pointer to the inode structure.
What value of "x" is the value for the system on which you saw this problem?
A quick look at 2.1.95 (as per mail I just sent, although not to the list) *seems* to indicate that in this *particular* case it'll properly re-do a lookup if the inode it got back from a directory name lookup cache (DNLC) lookup happened to refer to something that, when it did a "revalidate inode" operation, got an ESTALE - and, from the kernel messages, that appeared to be what happened.
However, an earlier kernel might not have done the right thing.