Chuck Lever 60ea681299 NFS: Migration support for RELEASE_LOCKOWNER
Currently the Linux NFS client ignores the operation status code for
the RELEASE_LOCKOWNER operation.  Like NFSv3's UMNT operation,
RELEASE_LOCKOWNER is a courtesy to help servers manage their
resources, and the outcome is not consequential for the client.

During a migration, a server may report NFS4ERR_LEASE_MOVED, in
which case the client really should retry, since typically
LEASE_MOVED has nothing to do with the current operation, but does
prevent it from going forward.

Also, it's important for a client to respond as soon as possible to
a moved lease condition, since the client's lease could expire on
the destination without further action by the client.

NFS4ERR_DELAY is not included in the list of valid status codes for
RELEASE_LOCKOWNER in RFC 3530bis.  However, rfc3530-migration-update
does permit migration-capable servers to return DELAY to clients,
but only in the context of an ongoing migration.  In this case the
server has frozen lock state in preparation for migration, and a
client retry would help the destination server purge unneeded state
once migration recovery is complete.

Interestly, NFS4ERR_MOVED is not valid for RELEASE_LOCKOWNER, even
though lock owners can be migrated with Transparent State Migration.

Note that RFC 3530bis section 9.5 includes RELEASE_LOCKOWNER in the
list of operations that renew a client's lease on the server if they
succeed.  Now that our client pays attention to the operation's
status code, we can note that renewal appropriately.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2013-10-28 15:30:46 -04:00
..
2013-06-29 12:56:55 +04:00
2013-07-05 18:59:33 +04:00
2013-06-29 12:56:46 +04:00
2013-08-12 15:22:43 -05:00
2013-06-29 12:56:53 +04:00
2013-09-16 19:17:24 -04:00
2013-09-07 10:38:29 +02:00
2013-06-29 12:56:47 +04:00
2013-06-29 12:56:32 +04:00
2013-06-29 12:56:38 +04:00
2013-06-29 12:56:39 +04:00
2013-06-29 12:56:29 +04:00
2013-09-24 11:23:33 +02:00
2013-06-29 12:57:04 +04:00
2013-07-10 18:11:34 -07:00
2013-04-29 15:40:23 -04:00
2013-09-24 14:41:42 -07:00
2013-09-13 23:06:40 -04:00
2013-06-29 12:57:05 +04:00
2013-03-03 23:00:23 -05:00
2013-09-10 18:56:31 -04:00
2013-09-13 23:06:40 -04:00
2013-02-22 23:31:31 -05:00
2013-04-17 13:25:09 +01:00
2013-05-07 20:16:25 -07:00
2013-05-31 15:16:33 -04:00
2013-07-30 11:53:12 -04:00
2013-06-29 12:57:05 +04:00
2013-09-10 18:56:32 -04:00
2013-05-29 12:57:34 -07:00