1. 01 6月, 2012 1 次提交
  2. 26 3月, 2012 2 次提交
    • J
      nfsd: add nfsd4_client_tracking_ops struct and a way to set it · 2a4317c5
      Jeff Layton 提交于
      Abstract out the mechanism that we use to track clients into a set of
      client name tracking functions.
      
      This gives us a mechanism to plug in a new set of client tracking
      functions without disturbing the callers. It also gives us a way to
      decide on what tracking scheme to use at runtime.
      
      For now, this just looks like pointless abstraction, but later we'll
      add a new alternate scheme for tracking clients on stable storage.
      
      Note too that this patch anticipates the eventual containerization
      of this code by passing in struct net pointers in places. No attempt
      is made to containerize the legacy client tracker however.
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      2a4317c5
    • J
      nfsd: convert nfs4_client->cl_cb_flags to a generic flags field · a52d726b
      Jeff Layton 提交于
      We'll need a way to flag the nfs4_client as already being recorded on
      stable storage so that we don't continually upcall. Currently, that's
      recorded in the cl_firststate field of the client struct. Using an
      entire u32 to store a flag is rather wasteful though.
      
      The cl_cb_flags field is only using 2 bits right now, so repurpose that
      to a generic flags field. Rename NFSD4_CLIENT_KILL to
      NFSD4_CLIENT_CB_KILL to make it evident that it's part of the callback
      flags. Add a mask that we can use for existing checks that look to see
      whether any flags are set, so that the new flags don't interfere.
      
      Convert all references to cl_firstate to the NFSD4_CLIENT_STABLE flag,
      and add a new NFSD4_CLIENT_RECLAIM_COMPLETE flag.
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      a52d726b
  3. 07 3月, 2012 1 次提交
  4. 15 2月, 2012 2 次提交
  5. 06 1月, 2012 1 次提交
  6. 16 11月, 2011 1 次提交
    • J
      nfsd4: add a separate (lockowner, inode) lookup · 009673b4
      J. Bruce Fields 提交于
      Address the possible performance regression mentioned in "nfsd4: hash
      lockowners to simplify RELEASE_LOCKOWNER" by providing a separate
      (lockowner, inode) hash.
      
      Really, I doubt this matters much, but I think it's likely we'll change
      these data structures here and I'd rather that the need for (owner,
      inode) lookups be well-documented.
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      009673b4
  7. 24 10月, 2011 1 次提交
  8. 18 10月, 2011 3 次提交
  9. 11 10月, 2011 2 次提交
  10. 27 9月, 2011 4 次提交
  11. 19 9月, 2011 2 次提交
    • J
      nfsd4: hash closed stateid's like any other · f7a4d872
      J. Bruce Fields 提交于
      Look up closed stateid's in the stateid hash like any other stateid
      rather than searching the close lru.
      
      This is simpler, and fixes a bug: currently we handle only the case of a
      close that is the last close for a given stateowner, but not the case of
      a close for a stateowner that still has active opens on other files.
      Thus in a case like:
      
      	open(owner, file1)
      	open(owner, file2)
      	close(owner, file2)
      	close(owner, file2)
      
      the final close won't be recognized as a retransmission.
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      f7a4d872
    • J
      nfsd4: construct stateid from clientid and counter · d3b313a4
      J. Bruce Fields 提交于
      Including the full clientid in the on-the-wire stateid allows more
      reliable detection of bad vs. expired stateid's, simplifies code, and
      ensures we won't reuse the opaque part of the stateid (as we currently
      do when the same openowner closes and reopens the same file).
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      d3b313a4
  12. 17 9月, 2011 2 次提交
  13. 14 9月, 2011 5 次提交
  14. 07 9月, 2011 1 次提交
  15. 04 9月, 2011 1 次提交
  16. 01 9月, 2011 4 次提交
  17. 28 8月, 2011 2 次提交
  18. 20 8月, 2011 1 次提交
  19. 16 7月, 2011 1 次提交
  20. 18 3月, 2011 1 次提交
  21. 14 2月, 2011 1 次提交
    • J
      nfsd4: acquire only one lease per file · acfdf5c3
      J. Bruce Fields 提交于
      Instead of acquiring one lease each time another client opens a file,
      nfsd can acquire just one lease to represent all of them, and reference
      count it to determine when to release it.
      
      This fixes a regression introduced by
      c45821d2 "locks: eliminate fl_mylease
      callback": after that patch, only the struct file * is used to determine
      who owns a given lease.  But since we recently converted the server to
      share a single struct file per open, if we acquire multiple leases on
      the same file from nfsd, it then becomes impossible on unlocking a lease
      to determine which of those leases (all of whom share the same struct
      file *) we meant to remove.
      
      Thanks to Takashi Iwai <tiwai@suse.de> for catching a bug in a previous
      version of this patch.
      Tested-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      acfdf5c3
  22. 12 1月, 2011 1 次提交