summaryrefslogtreecommitdiff
path: root/Documentation/admin-guide/nfs
diff options
context:
space:
mode:
authorDai Ngo <dai.ngo@oracle.com>2026-02-13 10:36:30 -0800
committerChuck Lever <chuck.lever@oracle.com>2026-03-29 21:25:09 -0400
commitf52792f484ba2316853736856dde19b7e7458861 (patch)
tree3345ab39da8bb124384c5a8365b9a07e6924f6ef /Documentation/admin-guide/nfs
parentb48f44f36e6607b2f818560f19deb86b4a9c717b (diff)
downloadlwn-f52792f484ba2316853736856dde19b7e7458861.tar.gz
lwn-f52792f484ba2316853736856dde19b7e7458861.zip
NFSD: Enforce timeout on layout recall and integrate lease manager fencing
When a layout conflict triggers a recall, enforcing a timeout is necessary to prevent excessive nfsd threads from being blocked in __break_lease ensuring the server continues servicing incoming requests efficiently. This patch introduces a new function to lease_manager_operations: lm_breaker_timedout: Invoked when a lease recall times out and is about to be disposed of. This function enables the lease manager to inform the caller whether the file_lease should remain on the flc_list or be disposed of. For the NFSD lease manager, this function now handles layout recall timeouts. If the layout type supports fencing and the client has not been fenced, a fence operation is triggered to prevent the client from accessing the block device. While the fencing operation is in progress, the conflicting file_lease remains on the flc_list until fencing is complete. This guarantees that no other clients can access the file, and the client with exclusive access is properly blocked before disposal. Signed-off-by: Dai Ngo <dai.ngo@oracle.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'Documentation/admin-guide/nfs')
-rw-r--r--Documentation/admin-guide/nfs/pnfs-block-server.rst30
-rw-r--r--Documentation/admin-guide/nfs/pnfs-scsi-server.rst31
2 files changed, 61 insertions, 0 deletions
diff --git a/Documentation/admin-guide/nfs/pnfs-block-server.rst b/Documentation/admin-guide/nfs/pnfs-block-server.rst
index 20fe9f5117fe..b4f5997009af 100644
--- a/Documentation/admin-guide/nfs/pnfs-block-server.rst
+++ b/Documentation/admin-guide/nfs/pnfs-block-server.rst
@@ -40,3 +40,33 @@ how to translate the device into a serial number from SCSI EVPD 0x80::
echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log
EOF
+
+If the nfsd server needs to fence a non-responding client and the
+fencing operation fails, the server logs a warning message in the
+system log with the following format:
+
+ FENCE failed client[IP_address] clid[#n] device[dev_name]
+
+ Where:
+
+ IP_address: refers to the IP address of the affected client.
+ #n: indicates the unique client identifier.
+ dev_name: specifies the name of the block device related
+ to the fencing attempt.
+
+The server will repeatedly retry the operation indefinitely. During
+this time, access to the affected file is restricted for all other
+clients. This is to prevent potential data corruption if multiple
+clients access the same file simultaneously.
+
+To restore access to the affected file for other clients, the admin
+needs to take the following actions:
+
+ . shutdown or power off the client being fenced.
+ . manually expire the client to release all its state on the server:
+
+ echo 'expire' > /proc/fs/nfsd/clients/clid/ctl'.
+
+ Where:
+
+ clid: is the unique client identifier displayed in the system log.
diff --git a/Documentation/admin-guide/nfs/pnfs-scsi-server.rst b/Documentation/admin-guide/nfs/pnfs-scsi-server.rst
index b2eec2288329..db34afbf67a9 100644
--- a/Documentation/admin-guide/nfs/pnfs-scsi-server.rst
+++ b/Documentation/admin-guide/nfs/pnfs-scsi-server.rst
@@ -22,3 +22,34 @@ option and the underlying SCSI device support persistent reservations.
On the client make sure the kernel has the CONFIG_PNFS_BLOCK option
enabled, and the file system is mounted using the NFSv4.1 protocol
version (mount -o vers=4.1).
+
+If the nfsd server needs to fence a non-responding client and the
+fencing operation fails, the server logs a warning message in the
+system log with the following format:
+
+ FENCE failed client[IP_address] clid[#n] device[dev_name]
+
+ Where:
+
+ IP_address: refers to the IP address of the affected client.
+ #n: indicates the unique client identifier.
+ dev_name: specifies the name of the block device related
+ to the fencing attempt.
+
+The server will repeatedly retry the operation indefinitely. During
+this time, access to the affected file is restricted for all other
+clients. This is to prevent potential data corruption if multiple
+clients access the same file simultaneously.
+
+To restore access to the affected file for other clients, the admin
+needs to take the following actions:
+
+ . shutdown or power off the client being fenced.
+ . manually expire the client to release all its state on the server:
+
+ echo 'expire' > /proc/fs/nfsd/clients/clid/ctl'.
+
+ Where:
+
+ clid: is the unique client identifier displayed in the system log.
+