An error occurred fetching the project authors.
  1. 21 Oct, 2010 2 commits
  2. 01 Oct, 2010 8 commits
  3. 26 Aug, 2010 2 commits
  4. 29 Jul, 2010 1 commit
    • J. Bruce Fields's avatar
      nfsd4: share file descriptors between stateid's · f9d7562f
      J. Bruce Fields authored
      The vfs doesn't really allow us to "upgrade" a file descriptor from
      read-only to read-write, and our attempt to do so in nfs4_upgrade_open
      is ugly and incomplete.
      
      Move to a different scheme where we keep multiple opens, shared between
      open stateid's, in the nfs4_file struct.  Each file will be opened at
      most 3 times (for read, write, and read-write), and those opens will be
      shared between all clients and openers.  On upgrade we will do another
      open if necessary instead of attempting to upgrade an existing open.
      We keep count of the number of readers and writers so we know when to
      close the shared files.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      f9d7562f
  5. 13 May, 2010 3 commits
  6. 22 Apr, 2010 4 commits
    • J. Bruce Fields's avatar
      nfsd4: allow 4.0 clients to change callback path · 4b21d0de
      J. Bruce Fields authored
      The rfc allows a client to change the callback parameters, but we didn't
      previously implement it.
      
      Teach the callbacks to rerun themselves (by placing themselves on a
      workqueue) when they recognize that their rpc task has been killed and
      that the callback connection has changed.
      
      Then we can change the callback connection by setting up a new rpc
      client, modifying the nfs4 client to point at it, waiting for any work
      in progress to complete, and then shutting down the old client.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      4b21d0de
    • J. Bruce Fields's avatar
      nfsd4: rearrange cb data structures · 2bf23875
      J. Bruce Fields authored
      Mainly I just want to separate the arguments used for setting up the tcp
      client from the rest.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      2bf23875
    • J. Bruce Fields's avatar
      nfsd4: cl_count is unused · b12a05cb
      J. Bruce Fields authored
      Now that the shutdown sequence guarantees callbacks are shut down before
      the client is destroyed, we no longer have a use for cl_count.
      
      We'll probably reinstate a reference count on the client some day, but
      it will be held by users other than callbacks.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      b12a05cb
    • J. Bruce Fields's avatar
      nfsd4: don't sleep in lease-break callback · b5a1a81e
      J. Bruce Fields authored
      The NFSv4 server's fl_break callback can sleep (dropping the BKL), in
      order to allocate a new rpc task to send a recall to the client.
      
      As far as I can tell this doesn't cause any races in the current code,
      but the analysis is difficult.  Also, the sleep here may complicate the
      move away from the BKL.
      
      So, just schedule some work to do the job for us instead.  The work will
      later also prove useful for restarting a call after the callback
      information is changed.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      b5a1a81e
  7. 02 Apr, 2010 1 commit
  8. 15 Dec, 2009 2 commits
  9. 14 Dec, 2009 2 commits
    • Boaz Harrosh's avatar
      nfsd: Move private headers to source directory · 9a74af21
      Boaz Harrosh authored
      Lots of include/linux/nfsd/* headers are only used by
      nfsd module. Move them to the source directory
      Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      9a74af21
    • Boaz Harrosh's avatar
      nfsd: Headers Independence and include cleanups · 72579ac9
      Boaz Harrosh authored
      * Add includes that are directly used by headers
      * Remove includes that are not needed
      
      These are the changes made:
      
      [xdr.h]
      struct nfsd_readdirres has an embedded struct readdir_cd from nfsd.h
      fixing that we can drop other includes
      
      [xdr4.h]
      embedded types defined both at state.h and nfsd.h
      
      [syscall.h]
      After export.h fix none of these stuff is needed.
      fix extra space in # include <> statement
      
      [stats.h]
      does not need <linux/nfs4.h> but was export to user-mode
      so I don't touch it
      
      [state.h]
      embedded types from nfsfh.h like struct knfsd_fh. bringing that
      eliminates the need for all other includes
      
      [nfsfh.h]
      directly manipulating types from sunrpc/svc.h.
      Removed Other unused headers.
      
      [nfsd.h]
      removed unused headers include
      
      [export.h]
      lots of sunrpc/svc.h types and a single prototype declaration
      with pointer from nfsfh.h, but all users of export.h do need
      nfsfh.h any way. remove now un-needed include.
      
      [const.h]
      Unfixed (not independent)
      
      [cache.h]
      could do with a forward declaration of "struct svc_rqst;"
      from sunrpc/svc.h but all users absolutely will need
      sunrpc/svc.h it is easier overall this way.
      Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      72579ac9
  10. 05 Nov, 2009 1 commit
  11. 16 Sep, 2009 5 commits
  12. 02 Sep, 2009 2 commits
    • Andy Adamson's avatar
      nfsd41: replace page based DRC with buffer based DRC · 557ce264
      Andy Adamson authored
      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: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      557ce264
    • Andy Adamson's avatar
      nfsd41: bound forechannel drc size by memory usage · a649637c
      Andy Adamson authored
      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: default avatarAndy Adamson <andros@netapp.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      a649637c
  13. 21 Aug, 2009 2 commits
  14. 28 Jul, 2009 2 commits
    • Andy Adamson's avatar
      nfsd41: Use separate DRC for setclientid · 49557cc7
      Andy Adamson authored
      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: default avatarAndy Adamson <andros@netapp.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      49557cc7
    • Andy Adamson's avatar
      nfsd41: hange from page to memory based drc limits · 0c193054
      Andy Adamson authored
      NFSD_SLOT_CACHE_SIZE is the size of all encoded operation responses
      (excluding the sequence operation) that we want to cache.
      
      For now, keep NFSD_SLOT_CACHE_SIZE at PAGE_SIZE. It will be reduced
      when the DRC is changed from page based to memory based.
      Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      0c193054
  15. 19 Jun, 2009 1 commit
  16. 17 Jun, 2009 1 commit
  17. 16 Jun, 2009 1 commit