1. 13 9月, 2014 1 次提交
  2. 11 9月, 2014 2 次提交
  3. 27 8月, 2014 2 次提交
  4. 05 8月, 2014 1 次提交
  5. 04 8月, 2014 1 次提交
    • N
      NFS: nfs4_do_open should add negative results to the dcache. · 4fa2c54b
      NeilBrown 提交于
      If you have an NFSv4 mounted directory which does not container 'foo'
      and:
      
        ls -l foo
        ssh $server touch foo
        cat foo
      
      then the 'cat' will fail (usually, depending a bit on the various
      cache ages).  This is correct as negative looks are cached by default.
      However with the same initial conditions:
      
        cat foo
        ssh $server touch foo
        cat foo
      
      will usually succeed.  This is because an "open" does not add a
      negative dentry to the dcache, while a "lookup" does.
      
      This can have negative performance effects.  When "gcc" searches for
      an include file, it will try to "open" the file in every director in
      the search path.  Without caching of negative "open" results, this
      generates much more traffic to the server than it should (or than
      NFSv3 does).
      
      The root of the problem is that _nfs4_open_and_get_state() will call
      d_add_unique() on a positive result, but not on a negative result.
      Compare with nfs_lookup() which calls d_materialise_unique on both
      a positive result and on ENOENT.
      
      This patch adds a call d_add() in the ENOENT case for
      _nfs4_open_and_get_state() and also calls nfs_set_verifier().
      
      With it, many fewer "open" requests for known-non-existent files are
      sent to the server.
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      4fa2c54b
  6. 13 7月, 2014 5 次提交
  7. 25 6月, 2014 2 次提交
  8. 07 6月, 2014 1 次提交
  9. 30 5月, 2014 1 次提交
  10. 29 5月, 2014 5 次提交
  11. 29 3月, 2014 1 次提交
  12. 18 3月, 2014 2 次提交
  13. 06 3月, 2014 2 次提交
  14. 02 3月, 2014 1 次提交
  15. 20 2月, 2014 3 次提交
  16. 02 2月, 2014 1 次提交
  17. 30 1月, 2014 3 次提交
  18. 28 1月, 2014 1 次提交
  19. 23 1月, 2014 1 次提交
    • B
      pnfs: Proper delay for NFS4ERR_RECALLCONFLICT in layout_get_done · ed7e5423
      Boaz Harrosh 提交于
      An NFS4ERR_RECALLCONFLICT is returned by server from a GET_LAYOUT
      only when a Server Sent a RECALL do to that GET_LAYOUT, or
      the RECALL and GET_LAYOUT crossed on the wire.
      In any way this means we want to wait at most until in-flight IO
      is finished and the RECALL can be satisfied.
      
      So a proper wait here is more like 1/10 of a second, not 15 seconds
      like we have now. In case of a server bug we delay exponentially
      longer on each retry.
      
      Current code totally craps out performance of very large files on
      most pnfs-objects layouts, because of how the map changes when the
      file has grown into the next raid group.
      
      [Stable: This will patch back to 3.9. If there are earlier still
       maintained trees, please tell me I'll send a patch]
      
      CC: Stable Tree <stable@vger.kernel.org>
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      ed7e5423
  20. 14 1月, 2014 2 次提交
  21. 05 12月, 2013 1 次提交
    • T
      NFSv4.1: Prevent a 3-way deadlock between layoutreturn, open and state recovery · f22e5edd
      Trond Myklebust 提交于
      Andy Adamson reports:
      
      The state manager is recovering expired state and recovery OPENs are being
      processed. If kswapd is pruning inodes at the same time, a deadlock can occur
      when kswapd calls evict_inode on an NFSv4.1 inode with a layout, and the
      resultant layoutreturn gets an error that the state mangager is to handle,
      causing the layoutreturn to wait on the (NFS client) cl_rpcwaitq.
      
      At the same time an open is waiting for the inode deletion to complete in
      __wait_on_freeing_inode.
      
      If the open is either the open called by the state manager, or an open from
      the same open owner that is holding the NFSv4 sequence id which causes the
      OPEN from the state manager to wait for the sequence id on the Seqid_waitqueue,
      then the state is deadlocked with kswapd.
      
      The fix is simply to have layoutreturn ignore all errors except NFS4ERR_DELAY.
      We already know that layouts are dropped on all server reboots, and that
      it has to be coded to deal with the "forgetful client model" that doesn't
      send layoutreturns.
      Reported-by: NAndy Adamson <andros@netapp.com>
      Link: http://lkml.kernel.org/r/1385402270-14284-1-git-send-email-andros@netapp.comSigned-off-by: NTrond Myklebust <Trond.Myklebust@primarydata.com>
      f22e5edd
  22. 21 11月, 2013 1 次提交