1. 06 12月, 2012 3 次提交
  2. 27 11月, 2012 1 次提交
  3. 21 11月, 2012 1 次提交
  4. 02 10月, 2012 2 次提交
    • C
      NFS: Add nfs4_unique_id boot parameter · 6f2ea7f2
      Chuck Lever 提交于
      An optional boot parameter is introduced to allow client
      administrators to specify a string that the Linux NFS client can
      insert into its nfs_client_id4 id string, to make it both more
      globally unique, and to ensure that it doesn't change even if the
      client's nodename changes.
      
      If this boot parameter is not specified, the client's nodename is
      used, as before.
      
      Client installation procedures can create a unique string (typically,
      a UUID) which remains unchanged during the lifetime of that client
      instance.  This works just like creating a UUID for the label of the
      system's root and boot volumes.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      6f2ea7f2
    • C
      NFS: Discover NFSv4 server trunking when mounting · 05f4c350
      Chuck Lever 提交于
      "Server trunking" is a fancy named for a multi-homed NFS server.
      Trunking might occur if a client sends NFS requests for a single
      workload to multiple network interfaces on the same server.  There
      are some implications for NFSv4 state management that make it useful
      for a client to know if a single NFSv4 server instance is
      multi-homed.  (Note this is only a consideration for NFSv4, not for
      legacy versions of NFS, which are stateless).
      
      If a client cares about server trunking, no NFSv4 operations can
      proceed until that client determines who it is talking to.  Thus
      server IP trunking discovery must be done when the client first
      encounters an unfamiliar server IP address.
      
      The nfs_get_client() function walks the nfs_client_list and matches
      on server IP address.  The outcome of that walk tells us immediately
      if we have an unfamiliar server IP address.  It invokes
      nfs_init_client() in this case.  Thus, nfs4_init_client() is a good
      spot to perform trunking discovery.
      
      Discovery requires a client to establish a fresh client ID, so our
      client will now send SETCLIENTID or EXCHANGE_ID as the first NFS
      operation after a successful ping, rather than waiting for an
      application to perform an operation that requires NFSv4 state.
      
      The exact process for detecting trunking is different for NFSv4.0 and
      NFSv4.1, so a minorversion-specific init_client callout method is
      introduced.
      
      CLID_INUSE recovery is important for the trunking discovery process.
      CLID_INUSE is a sign the server recognizes the client's nfs_client_id4
      id string, but the client is using the wrong principal this time for
      the SETCLIENTID operation.  The SETCLIENTID must be retried with a
      series of different principals until one works, and then the rest of
      trunking discovery can proceed.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      05f4c350
  5. 29 9月, 2012 3 次提交
  6. 17 8月, 2012 1 次提交
  7. 31 7月, 2012 6 次提交
  8. 18 7月, 2012 4 次提交
  9. 29 6月, 2012 3 次提交
  10. 05 6月, 2012 1 次提交
    • T
      NFSv4: Fix an Oops in the open recovery code · 1549210f
      Trond Myklebust 提交于
      The open recovery code does not need to request a new value for the
      mdsthreshold, and so does not allocate a struct nfs4_threshold.
      The problem is that encode_getfattr_open() will still request an
      mdsthreshold, and so we end up Oopsing in decode_attr_mdsthreshold.
      
      This patch fixes encode_getfattr_open so that it doesn't request an
      mdsthreshold when the caller isn't asking for one. It also fixes
      decode_attr_mdsthreshold so that it errors if the server returns
      an mdsthreshold that we didn't ask for (instead of Oopsing).
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: Andy Adamson <andros@netapp.com>
      1549210f
  11. 28 5月, 2012 1 次提交
  12. 27 5月, 2012 1 次提交
  13. 26 5月, 2012 2 次提交
  14. 25 5月, 2012 2 次提交
  15. 23 5月, 2012 3 次提交
    • 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: Remove nfs_unique_id · ce1c8fc1
      Chuck Lever 提交于
      Clean up:  this structure is unused.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      ce1c8fc1
    • 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
  16. 15 5月, 2012 1 次提交
  17. 28 4月, 2012 4 次提交
  18. 21 4月, 2012 1 次提交