1. 24 5月, 2012 1 次提交
    • T
      NFSv4.1: Fix session initialisation races · 7b38c368
      Trond Myklebust 提交于
      Session initialisation is not complete until the lease manager
      has run. We need to ensure that both nfs4_init_session and
      nfs4_init_ds_session do so, and that they check for any resulting
      errors in clp->cl_cons_state.
      
      Only after this is done, can nfs4_ds_connect check the contents
      of clp->cl_exchange_flags.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: Andy Adamson <andros@netapp.com>
      7b38c368
  2. 23 5月, 2012 7 次提交
    • C
      NFS: EXCHANGE_ID should save the server major and minor ID · acdeb69d
      Chuck Lever 提交于
      Save the server major and minor ID results from EXCHANGE_ID, as they
      are needed for detecting server trunking.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      acdeb69d
    • C
      NFS: Always use the same SETCLIENTID boot verifier · f092075d
      Chuck Lever 提交于
      Currently our NFS client assigns a unique SETCLIENTID boot verifier
      for each server IP address it knows about.  It's set to CURRENT_TIME
      when the struct nfs_client for that server IP is created.
      
      During the SETCLIENTID operation, our client also presents an
      nfs_client_id4 string to servers, as an identifier on which the server
      can hang all of this client's NFSv4 state.  Our client's
      nfs_client_id4 string is unique for each server IP address.
      
      An NFSv4 server is obligated to wipe all NFSv4 state associated with
      an nfs_client_id4 string when the client presents the same
      nfs_client_id4 string along with a changed SETCLIENTID boot verifier.
      
      When our client unmounts the last of a server's shares, it destroys
      that server's struct nfs_client.  The next time the client mounts that
      NFS server, it creates a fresh struct nfs_client with a fresh boot
      verifier.  On seeing the fresh verifer, the server wipes any previous
      NFSv4 state associated with that nfs_client_id4.
      
      However, NFSv4.1 clients are supposed to present the same
      nfs_client_id4 string to all servers.  And, to support Transparent
      State Migration, the same nfs_client_id4 string should be presented
      to all NFSv4.0 servers so they recognize that migrated state for this
      client belongs with state a server may already have for this client.
      (This is known as the Uniform Client String model).
      
      If the nfs_client_id4 string is the same but the boot verifier changes
      for each server IP address, SETCLIENTID and EXCHANGE_ID operations
      from such a client could unintentionally result in a server wiping a
      client's previously obtained lease.
      
      Thus, if our NFS client is going to use a fixed nfs_client_id4 string,
      either for NFSv4.0 or NFSv4.1 mounts, our NFS client should use a
      boot verifier that does not change depending on server IP address.
      Replace our current per-nfs_client boot verifier with a per-nfs_net
      boot verifier.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      f092075d
    • 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
    • C
      NFS: Clean up return code checking in nfs4_proc_exchange_id() · 177313f1
      Chuck Lever 提交于
      Clean up: update to use matching types in "if" expressions.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      177313f1
    • C
      NFS: Use proper naming conventions for nfs_client.impl_id field · 59155546
      Chuck Lever 提交于
      Clean up:  When naming fields and data types, follow established
      conventions to facilitate accurate grep/cscope searches.
      
      Additionally, for consistency, move the impl_id field into the NFSv4-
      specific part of the nfs_client, and free that memory in the logic
      that shuts down NFSv4 nfs_clients.
      
      Introduced by commit 7d2ed9ac "NFSv4: parse and display server
      implementation ids," Fri Feb 17, 2012.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      59155546
    • C
      NFS: Use proper naming conventions for NFSv4.1 server scope fields · 79d4e1f0
      Chuck Lever 提交于
      Clean up:  When naming fields and data types, follow established
      conventions to facilitate accurate grep/cscope searches.
      
      Additionally, for consistency, move the scope field into the NFSv4-
      specific part of the nfs_client, and free that memory in the logic
      that shuts down NFSv4 nfs_clients.
      
      Introduced by commit 99fe60d0 "nfs41: exchange_id operation", April
      1 2009.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      79d4e1f0
    • C
      NFS: Don't swap bytes in nfs4_construct_boot_verifier() · c3607282
      Chuck Lever 提交于
      The SETCLIENTID boot verifier is opaque to NFSv4 servers, thus there
      is no requirement for byte swapping before the client puts the
      verifier on the wire.
      
      This treatment is similar to other timestamp-based verifiers.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      c3607282
  3. 20 5月, 2012 1 次提交
  4. 15 5月, 2012 2 次提交
  5. 02 5月, 2012 7 次提交
  6. 01 5月, 2012 1 次提交
  7. 28 4月, 2012 12 次提交
  8. 21 4月, 2012 1 次提交
  9. 20 4月, 2012 3 次提交
  10. 28 3月, 2012 3 次提交
  11. 25 3月, 2012 1 次提交
  12. 21 3月, 2012 1 次提交