1. 16 12月, 2009 1 次提交
    • S
      nfsd: introduce export flag for v4 pseudoroot · eb4c86c6
      Steve Dickson 提交于
      NFSv4 differs from v2 and v3 in that it presents a single unified
      filesystem tree, whereas v2 and v3 exported multiple filesystem (whose
      roots could be found using a separate mount protocol).
      
      Our original NFSv4 server implementation asked the administrator to
      designate a single filesystem as the NFSv4 root, then to mount
      filesystems they wished to export underneath.  (Often using bind mounts
      of already-existing filesystems.)
      
      This was conceptually simple, and allowed easy implementation, but
      created a serious obstacle to upgrading between v2/v3: since the paths
      to v4 filesystems were different, administrators would have to adjust
      all the paths in client-side mount commands when switching to v4.
      
      Various workarounds are possible.  For example, the administrator could
      export "/" and designate it as the v4 root.  However, the security risks
      of that approach are obvious, and in any case we shouldn't be requiring
      the administrator to take extra steps to fix this problem; instead, the
      server should present consistent paths across different versions by
      default.
      
      These patches take a modified version of that approach: we provide a new
      export option which exports only a subset of a filesystem.  With this
      flag, it becomes safe for mountd to export "/" by default, with no need
      for additional configuration.
      
      We begin just by defining the new flag.
      Signed-off-by: NSteve Dickson <steved@redhat.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      eb4c86c6
  2. 15 12月, 2009 5 次提交
  3. 14 11月, 2009 1 次提交
  4. 06 11月, 2009 1 次提交
  5. 23 9月, 2009 1 次提交
  6. 17 9月, 2009 1 次提交
  7. 16 9月, 2009 6 次提交
  8. 02 9月, 2009 2 次提交
    • 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: 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
  9. 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
  10. 21 8月, 2009 2 次提交
  11. 29 7月, 2009 2 次提交
    • 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: hange from page to memory based drc limits · 0c193054
      Andy Adamson 提交于
      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: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      0c193054
  12. 15 7月, 2009 1 次提交
    • A
      nfsd41: use globals for DRC limits · 4bd9b0f4
      Andy Adamson 提交于
      The version 4.1 DRC memory limit and tracking variables are server wide and
      session specific. Replace struct svc_serv fields with globals.
      Stop using the svc_serv sv_lock.
      
      Add a spinlock to serialize access to the DRC limit management variables which
      change on session creation and deletion (usage counter) or (future)
      administrative action to adjust the total DRC memory limit.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NBenny Halevy <bhalevy@panasas.com>
      4bd9b0f4
  13. 19 6月, 2009 1 次提交
  14. 18 6月, 2009 1 次提交
  15. 17 6月, 2009 1 次提交
  16. 12 6月, 2009 2 次提交
  17. 28 5月, 2009 1 次提交
  18. 02 5月, 2009 4 次提交
  19. 30 4月, 2009 1 次提交
  20. 29 4月, 2009 1 次提交
    • J
      nfsd: support ext4 i_version · c654b8a9
      J. Bruce Fields 提交于
      ext4 supports a real NFSv4 change attribute, which is bumped whenever
      the ctime would be updated, including times when two updates arrive
      within a jiffy of each other.  (Note that although ext4 has space for
      nanosecond-precision ctime, the real resolution is lower: it actually
      uses jiffies as the time-source.)  This ensures clients will invalidate
      their caches when they need to.
      
      There is some fear that keeping the i_version up-to-date could have
      performance drawbacks, so for now it's turned on only by a mount option.
      We hope to do something better eventually.
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      Cc: Theodore Tso <tytso@mit.edu>
      c654b8a9
  21. 07 4月, 2009 2 次提交
  22. 04 4月, 2009 2 次提交