Subject: [nfsv4] 3530bis Issue 37: More ops need to be able to return LEASE_MOVED

From: Robert Thurlow <[email-masked]>
Date: Wed, 06 Oct 2010 14:19:07 -0600

Hi folks,

This is issue 37 from http://github.com/loghyr/3530bis/blob/master/tasklist.txt.

In implementing NFSv4 migration support, we ran into a few more
ops which we believe should be able to return NFS4ERR_LEASE_MOVED.
The reason we have LEASE_MOVED is to notify the client that some
other filesystem it has used has migrated, and that it should react
to that to preserve its state.  Operations which include state
tokens should help with notification by failing with LEASE_MOVED.

The following OPs use state but do not now return LEASE_MOVED:
         OPEN_CONFIRM
         OPEN_DOWNGRADE
         SETATTR (when the file size is set)

IIRC from the 3530bis call, there were questions about whether
it was a good idea for OPEN_CONFIRM to return LEASE_MOVED.  I
believe it is, since state is used in the operation.  A possible
counter-argument is that delay can be inserted between OPEN and
OPEN_CONFIRM for LEASE_MOVED handling, leading to unconfirmed
open state being discarded, which is at least inconvenient.  A
server could of course choose to extend timeouts for a client
that had been sent a LEASE_MOVED notification.

If someone remembers a reason why one of these ops should not
return LEASE_MOVED, or you wish to comment on the above, please
let us know.

Thanks,
Rob T