1. 22 4月, 2010 3 次提交
  2. 17 4月, 2010 1 次提交
  3. 03 4月, 2010 2 次提交
  4. 07 3月, 2010 5 次提交
  5. 15 1月, 2010 1 次提交
  6. 16 12月, 2009 1 次提交
  7. 15 12月, 2009 2 次提交
  8. 14 11月, 2009 1 次提交
  9. 06 11月, 2009 1 次提交
  10. 28 10月, 2009 2 次提交
  11. 29 9月, 2009 1 次提交
    • A
      nfsd41: use sv_max_mesg for forechannel max sizes · ddc04fd4
      Andy Adamson 提交于
      ca_maxresponsesize and ca_maxrequest size include the RPC header.
      
      sv_max_mesg is sv_max_payolad plus a page for overhead and is used in
      svc_init_buffer to allocate server buffer space for both the request and reply.
      Note that this means we can service an RPC compound that requires
      ca_maxrequestsize (MAXWRITE) or ca_max_responsesize (MAXREAD) but that we do
      not support an RPC compound that requires both ca_maxrequestsize and
      ca_maxresponsesize.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      [bfields@citi.umich.edu: more documentation updates]
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      ddc04fd4
  12. 22 9月, 2009 1 次提交
  13. 16 9月, 2009 6 次提交
  14. 02 9月, 2009 4 次提交
    • A
      nfsd41: replace page based DRC with buffer based DRC · 557ce264
      Andy Adamson 提交于
      Use NFSD_SLOT_CACHE_SIZE size buffers for sessions DRC instead of holding nfsd
      pages in cache.
      
      Connectathon testing has shown that 1024 bytes for encoded compound operation
      responses past the sequence operation is sufficient, 512 bytes is a little too
      small. Set NFSD_SLOT_CACHE_SIZE to 1024.
      
      Allocate memory for the session DRC in the CREATE_SESSION operation
      to guarantee that the memory resource is available for caching responses.
      Allocate each slot individually in preparation for slot table size negotiation.
      
      Remove struct nfsd4_cache_entry and helper functions for the old page-based
      DRC.
      
      The iov_len calculation in nfs4svc_encode_compoundres is now always
      correct.  Replay is now done in nfsd4_sequence under the state lock, so
      the session ref count is only bumped on non-replay. Clean up the
      nfs4svc_encode_compoundres session logic.
      
      The nfsd4_compound_state statp pointer is also not used.
      Remove nfsd4_set_statp().
      
      Move useful nfsd4_cache_entry fields into nfsd4_slot.
      
      Signed-off-by: Andy Adamson <andros@netapp.com
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      557ce264
    • A
      nfsd41: replace nfserr_resource in pure nfs41 responses · bdac86e2
      Andy Adamson 提交于
      nfserr_resource is not a legal error for NFSv4.1. Replace it with
      nfserr_serverfault for EXCHANGE_ID and CREATE_SESSION processing.
      
      We will also need to map nfserr_resource to other errors in routines shared
      by NFSv4.0 and NFSv4.1
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      bdac86e2
    • A
      nfsd41: use session maxreqs for sequence target and highest slotid · a8dfdaeb
      Andy Adamson 提交于
      This fixes a bug in the sequence operation reply.
      
      The sequence operation returns the highest slotid it will accept in the future
      in sr_highest_slotid, and the highest slotid it prefers the client to use.
      Since we do not re-negotiate the session slot table yet, these should both
      always be set to the session ca_maxrequests.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      a8dfdaeb
    • A
      nfsd41: bound forechannel drc size by memory usage · a649637c
      Andy Adamson 提交于
      By using the requested ca_maxresponsesize_cached * ca_maxresponses to bound
      a forechannel drc request size, clients can tailor a session to usage.
      
      For example, an I/O session (READ/WRITE only) can have a much smaller
      ca_maxresponsesize_cached (for only WRITE compound responses) and a lot larger
      ca_maxresponses to service a large in-flight data window.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      a649637c
  15. 29 8月, 2009 1 次提交
    • A
      nfsd41: expand solo sequence check · 468de9e5
      Andy Adamson 提交于
      Compounds consisting of only a sequence operation don't need any
      additional caching beyond the sequence information we store in the slot
      entry.  Fix nfsd4_is_solo_sequence to identify this case correctly.
      
      The additional check for a failed sequence in nfsd4_store_cache_entry()
      is redundant, since the nfsd4_is_solo_sequence call lower down catches
      this case.
      
      The final ce_cachethis set in nfsd4_sequence is also redundant.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      468de9e5
  16. 28 8月, 2009 1 次提交
  17. 21 8月, 2009 4 次提交
  18. 29 7月, 2009 3 次提交
    • A
      nfsd41: encode replay sequence from the slot values · abfabf8c
      Andy Adamson 提交于
      The sequence operation is not cached; always encode the sequence operation on
      a replay from the slot table and session values. This simplifies the sessions
      replay logic in nfsd4_proc_compound.
      
      If this is a replay of a compound that was specified not to be cached, return
      NFS4ERR_RETRY_UNCACHED_REP.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      abfabf8c
    • A
      nfsd41: Use separate DRC for setclientid · 49557cc7
      Andy Adamson 提交于
      Instead of trying to share the generic 4.1 reply cache code for the
      CREATE_SESSION reply cache, it's simpler to handle CREATE_SESSION
      separately.
      
      The nfs41 single slot clientid DRC holds the results of create session
      processing.  CREATE_SESSION can be preceeded by a SEQUENCE operation
      (an embedded CREATE_SESSION) and the create session single slot cache must be
      maintained.  nfsd4_replay_cache_entry() and nfsd4_store_cache_entry() do not
      implement the replay of an embedded CREATE_SESSION.
      
      The clientid DRC slot does not need the inuse, cachethis or other fields that
      the multiple slot session cache uses.  Replace the clientid DRC cache struct
      nfs4_slot cache with a new nfsd4_clid_slot cache.  Save the xdr struct
      nfsd4_create_session into the cache at the end of processing, and on a replay,
      replace the struct for the replay request with the cached version all while
      under the state lock.
      
      nfsd4_proc_compound will handle both the solo and embedded CREATE_SESSION case
      via the normal use of encode_operation.
      
      Errors that do not change the create session cache:
      A create session NFS4ERR_STALE_CLIENTID error means that a client record
      (and associated create session slot) could not be found and therefore can't
      be changed.  NFSERR_SEQ_MISORDERED errors do not change the slot cache.
      
      All other errors get cached.
      
      Remove the clientid DRC specific check in nfs4svc_encode_compoundres to
      put the session only if cstate.session is set which will now always be true.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      49557cc7
    • A
      nfsd41: change check_slot_seqid parameters · 88e588d5
      Andy Adamson 提交于
      For separation of session slot and clientid slot processing.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      88e588d5