NFS4ERR_SAME 10009
https://www.rfc-editor.org/rfc/rfc8881#err_SAME
15.1.15.4. NFS4ERR_SAME (Error Code 10009)
This error is returned by the NVERIFY operation to signify that the attributes compared were the same as those provided in the client's request.
1. What is the NVERIFY operation?
NVERIFY (Not Verify) is an NFSv4 COMPOUND operation used to test whether selected file attributes are different from values supplied by the client.
It is the logical inverse of VERIFY.
Purpose
Detect whether a file or directory has changed
Support cache validation
Enable optimistic concurrency control
Avoid unnecessary refetching of attributes or data
2. NVERIFY semantics (protocol rule)
For each attribute specified:
If (server_attribute_value != client_supplied_value)
→ NVERIFY succeeds (NFS4_OK)
Else
→ NVERIFY fails with NFS4ERR_SAME
This rule applies to all attributes in the bitmap.
3. Meaning of Status: NFS4ERR_SAME
NFS4ERR_SAME means the server confirms the attributes are identical to the values provided by the client.
Important clarifications:
It is not a transport or server error
It is not a LOOKUP failure
It is an expected logical result
The client asserted:
“This object should be different.”
The server replied:
“It is not different.”
4. Common attributes used with NVERIFY
Clients typically test attributes that indicate change:
Attribute Why
change Primary version counter
mtime Detect content modification
size Detect data change
ctime Metadata change
fileid Identity validation
5. Example NVERIFY request
Client sends:
NVERIFY
attrmask = { change, size }
attrvalues:
change = 0x0000000000000456
size = 8192
Server state
change = 0x0000000000000456
size = 8192
Result
→ NFS4ERR_SAME
Meaning:
“Nothing has changed.”
6. Relationship between VERIFY and NVERIFY
Operation Succeeds when
VERIFY attributes are equal
NVERIFY attributes are different
Failure code Meaning
NFS4ERR_NOT_SAME VERIFY failed
NFS4ERR_SAME NVERIFY failed
They are logical opposites.
7. Why clients intentionally use NVERIFY
Although it “fails”, NVERIFY is often used as a control flow mechanism:
Failure (NFS4ERR_SAME) → cached state still valid
Success (NFS4_OK) → object changed, refresh cache
So seeing NFS4ERR_SAME is often good news.
Example
NFS request


NFS response


So the phrase “responded to LOOKUP operation” is a bit misleading—what actually happened is:
LOOKUP → OK
NVERIFY → NFS4ERR_SAME
Why NVERIFY appears after LOOKUP
In NFSv4, operations are sent in a COMPOUND.
A very common pattern is:
PUTFH
LOOKUP
NVERIFY
Purpose:
LOOKUP
→ selects the target file and sets the current filehandle
NVERIFY
→ checks whether certain attributes differ from cached values
This is typically used for:
cache revalidation
pathname resolution consistency
detecting whether a directory entry changed