• Chuck Lever's avatar
    NFS: Migration support for RELEASE_LOCKOWNER · 60ea6812
    Chuck Lever authored
    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: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    60ea6812
nfs4proc.c 225 KB