Skip to content
  • Chuck Lever's avatar
    NFSv4.1: Use seqid returned by EXCHANGE_ID after state migration · 838edb94
    Chuck Lever authored
    
    
    Transparent State Migration copies a client's lease state from the
    server where a filesystem used to reside to the server where it now
    resides. When an NFSv4.1 client first contacts that destination
    server, it uses EXCHANGE_ID to detect trunking relationships.
    
    The lease that was copied there is returned to that client, but the
    destination server sets EXCHGID4_FLAG_CONFIRMED_R when replying to
    the client. This is because the lease was confirmed on the source
    server (before it was copied).
    
    When CONFIRMED_R is set, the client throws away the sequence ID
    returned by the server. During a Transparent State Migration, however
    there's no other way for the client to know what sequence ID to use
    with a lease that's been migrated.
    
    Therefore, the client must save and use the contrived slot sequence
    value returned by the destination server even when CONFIRMED_R is
    set.
    
    Note that some servers always return a seqid of 1 after a migration.
    
    Reported-by: default avatarXuan Qi <xuan.qi@oracle.com>
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Tested-by: default avatarXuan Qi <xuan.qi@oracle.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    838edb94