X-Git-Url: http://git.tuebingen.mpg.de/?p=aple.git;a=blobdiff_plain;f=Filesystems.m4;h=e2ac56198451a3f2bee58d0bbc764399aa86958d;hp=ca894346e55d865ee7171c1052c22a01a005acf4;hb=HEAD;hpb=63ef3ef23517d1f63b4a17da8cecb88b8fa1ebdf diff --git a/Filesystems.m4 b/Filesystems.m4 index ca89434..40dedd1 100644 --- a/Filesystems.m4 +++ b/Filesystems.m4 @@ -1316,15 +1316,43 @@ operations. With close-to-open cache consistency the green client is guaranteed to see the write operation of the blue client while there is no such guarantee for the red client.
-SUBSECTION(«Delegations») - -nfs4 introduced a feature called file delegation. A file -delegation allows the client to treat a file temporarily as if no -other client is accessing it. Once a file has been delegated to a -client, the client might cache all write operations for this file, -and only contact the server when memory pressure forces the client -to free memory by writing back file contents. The server notifies -the client if another client attempts to access that file. +SUBSECTION(«File and Directory Delegations») + +nfs4 introduced a per-file state management feature called +file delegation. Once a file has been delegated to a client, +the server blocks write access to the file for other nfs clients and +for local processes. Therefore the client may assume that the file +does not change unexpectedly. This cache-coherency guarantee can +improve performance because the client may cache all write operations +for this file, and only contact the server when memory pressure forces +the client to free memory by writing back file contents.
+ + A drawback of file delegations is that they delay conflicting open
+requests by other clients because existing delegations must be recalled
+before the open request completes. This is particularly important if
+an nfs client which is holding a delegation gets disconnected from
+the network. To detect this condition, clients report to the server
+that they are still alive by periodically sending a RENEW
+request. If no such request has arrived for the lease time
+(typically 90 seconds), the server may recall any delegations it
+has granted to the disconnected client. This allows accesses from
+other clients that would normally be prevented because of the
+delegation.
However, the server is not obliged to recall uncontested +delegations for clients whose lease period has expired. In fact, +newer Linux NFS server implementations retain the uncontested +state of unresponsive clients for up to 24 hours. This so-called +courteous server feature was introduced in Linux-5.19 +(released in 2022).
+ +Let us finally remark that the delegations as discussed above +work only for regular files. NFS versions up to and including 4.0 +do not grant delegations for directories. With nfs4.1 an nfs client +may ask the server to be notified whenever changes are made to the +directory by another client. Among other benefits, this feature allows +for strong directory cache coherency. However, as of 2022, +directory delegations are not yet implemented by Linux.
SUBSECTION(«Silly Renames and Stale File Handles») @@ -1357,7 +1385,7 @@ silly renames: An NFS4.1 server knows when it its safe to unlink a file and communicates this information to the client.The file handle which an nfs client received through some earlier -rpc can become invalid at any time due to operations on a different +rpc can become invalid at any time due to operations on different hosts. This happens, for example, if the file was deleted on the server or on a different nfs client, or when the directory that contains the file is no longer exported by the server due to a configuration @@ -1404,7 +1432,7 @@ EXERCISES()
cat > foo &
. Note that the cat process automatically
receives the STOP signal. Run rm foo; ls -ltra
. Read
- section D2 of the nfs HOWTO
+ section D2 of the nfs HOWTO
for the explanation. { while :; do echo; sleep
@@ -1413,7 +1441,7 @@ EXERCISES()
Discuss the pros and cons of hard vs. soft mounts.
- Read section A10 of the nfs
+ Read section A10 of the nfs
HOWTO to learn about common reasons for stale nfs handles.
Can every local filesystem be exported via nfs?
@@ -1480,9 +1508,12 @@ SECTION(«Further Reading»)
Dominic Giampaolo: Practical File System Design
Cormen
Darrick Wong: XFS Filesystem Disk Structures
- The xfs FAQ
Documentation/filesystems/path-lookup.rst
rfc 5531: Remote Procedure Call Protocol, Version 2 (2009)
Birell, A.D. and Nelson, B.J.: Implementing Remote Procedure Calls
(1984)
+ NFS: the early
+ years and NFS: the new
+ millennium, two articles on the design and history of NFS by Neil
+ Brown.