• C
    NFS: Force server to drop NFSv4 state · 2c820d9a
    Chuck Lever 提交于
    nfs4_reset_all_state() refreshes the boot verifier a server sees to
    trigger that server to wipe this client's state.  This function is
    invoked when an NFSv4.1 server reports that it has revoked some or
    all of a client's NFSv4 state.
    
    To facilitate server trunking discovery, we will eventually want to
    move the cl_boot_time field to a more global structure.  The Uniform
    Client String model (and specifically, server trunking detection)
    requires that all servers see the same boot verifier until the client
    actually does reboot, and not a fresh verifier every time the client
    unmounts and remounts the server.
    
    Without the cl_boot_time field, however, nfs4_reset_all_state() will
    have to find some other way to force the server to purge the client's
    NFSv4 state.
    
    Because these verifiers are opaque (ie, the server doesn't know or
    care that they happen to be timestamps), we can force the server
    to wipe NFSv4 state by updating the boot verifier as we do now, then
    immediately afterwards establish a fresh client ID using the old boot
    verifier again.
    
    Hopefully there are no extra paranoid server implementations that keep
    track of the client's boot verifiers and prevent clients from reusing
    a previous one.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
    2c820d9a
nfs4proc.c 176.1 KB