1. 16 7月, 2014 1 次提交
    • N
      sched: Remove proliferation of wait_on_bit() action functions · 74316201
      NeilBrown 提交于
      The current "wait_on_bit" interface requires an 'action'
      function to be provided which does the actual waiting.
      There are over 20 such functions, many of them identical.
      Most cases can be satisfied by one of just two functions, one
      which uses io_schedule() and one which just uses schedule().
      
      So:
       Rename wait_on_bit and        wait_on_bit_lock to
              wait_on_bit_action and wait_on_bit_lock_action
       to make it explicit that they need an action function.
      
       Introduce new wait_on_bit{,_lock} and wait_on_bit{,_lock}_io
       which are *not* given an action function but implicitly use
       a standard one.
       The decision to error-out if a signal is pending is now made
       based on the 'mode' argument rather than being encoded in the action
       function.
      
       All instances of the old wait_on_bit and wait_on_bit_lock which
       can use the new version have been changed accordingly and their
       action functions have been discarded.
       wait_on_bit{_lock} does not return any specific error code in the
       event of a signal so the caller must check for non-zero and
       interpolate their own error code as appropriate.
      
      The wait_on_bit() call in __fscache_wait_on_invalidate() was
      ambiguous as it specified TASK_UNINTERRUPTIBLE but used
      fscache_wait_bit_interruptible as an action function.
      David Howells confirms this should be uniformly
      "uninterruptible"
      
      The main remaining user of wait_on_bit{,_lock}_action is NFS
      which needs to use a freezer-aware schedule() call.
      
      A comment in fs/gfs2/glock.c notes that having multiple 'action'
      functions is useful as they display differently in the 'wchan'
      field of 'ps'. (and /proc/$PID/wchan).
      As the new bit_wait{,_io} functions are tagged "__sched", they
      will not show up at all, but something higher in the stack.  So
      the distinction will still be visible, only with different
      function names (gds2_glock_wait versus gfs2_glock_dq_wait in the
      gfs2/glock.c case).
      
      Since first version of this patch (against 3.15) two new action
      functions appeared, on in NFS and one in CIFS.  CIFS also now
      uses an action function that makes the same freezer aware
      schedule call as NFS.
      Signed-off-by: NNeilBrown <neilb@suse.de>
      Acked-by: David Howells <dhowells@redhat.com> (fscache, keys)
      Acked-by: Steven Whitehouse <swhiteho@redhat.com> (gfs2)
      Acked-by: NPeter Zijlstra <peterz@infradead.org>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Steve French <sfrench@samba.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20140707051603.28027.72349.stgit@notabene.brownSigned-off-by: NIngo Molnar <mingo@kernel.org>
      74316201
  2. 26 6月, 2014 1 次提交
  3. 30 5月, 2014 1 次提交
  4. 18 4月, 2014 1 次提交
  5. 06 1月, 2014 1 次提交
  6. 30 9月, 2013 2 次提交
  7. 29 6月, 2013 1 次提交
  8. 07 6月, 2013 1 次提交
  9. 09 5月, 2013 1 次提交
    • A
      NFS4.1 Fix data server connection race · c23266d5
      Andy Adamson 提交于
      Unlike meta data server mounts which support multiple mount points to
      the same server via struct nfs_server, data servers support a single connection.
      
      Concurrent calls to setup the data server connection can race where the first
      call allocates the nfs_client struct, and before the cache struct nfs_client
      pointer can be set, a second call also tries to setup the connection, finds the
      already allocated nfs_client, bumps the reference count, re-initializes the
      session,etc. This results in a hanging data server session after umount.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      c23266d5
  10. 05 2月, 2013 1 次提交
  11. 06 12月, 2012 1 次提交
  12. 05 11月, 2012 1 次提交
  13. 15 10月, 2012 1 次提交
  14. 29 9月, 2012 2 次提交
  15. 29 6月, 2012 1 次提交
  16. 24 5月, 2012 1 次提交
    • T
      NFSv4.1: Fix session initialisation races · 7b38c368
      Trond Myklebust 提交于
      Session initialisation is not complete until the lease manager
      has run. We need to ensure that both nfs4_init_session and
      nfs4_init_ds_session do so, and that they check for any resulting
      errors in clp->cl_cons_state.
      
      Only after this is done, can nfs4_ds_connect check the contents
      of clp->cl_exchange_flags.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: Andy Adamson <andros@netapp.com>
      7b38c368
  17. 23 5月, 2012 1 次提交
  18. 20 5月, 2012 3 次提交
  19. 27 4月, 2012 1 次提交
  20. 12 3月, 2012 1 次提交
    • T
      NFS: Fix a number of sparse warnings · 17280175
      Trond Myklebust 提交于
      Fix a number of "warning: symbol 'foo' was not declared. Should it be
      static?" conditions.
      
      Fix 2 cases of "warning: Using plain integer as NULL pointer"
      
      fs/nfs/delegation.c:263:31: warning: restricted fmode_t degrades to integer
        - We want to allow upgrades to a WRITE delegation, but should otherwise
          consider servers that hand out duplicate delegations to be borken.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      17280175
  21. 07 2月, 2012 2 次提交
  22. 01 2月, 2012 2 次提交
  23. 13 1月, 2012 1 次提交
  24. 13 7月, 2011 4 次提交
  25. 30 5月, 2011 2 次提交
  26. 29 5月, 2011 2 次提交
  27. 12 5月, 2011 1 次提交
  28. 25 3月, 2011 1 次提交
  29. 12 3月, 2011 1 次提交
    • A
      NFSv4.1: turn off pNFS on ds connection failure · 568e8c49
      Andy Adamson 提交于
      If a data server is unavailable, go through MDS.
      
      Mark the deviceid containing the data server as a negative cache entry.
      Do not try to connect to any data server on a deviceid marked as a negative
      cache entry. Mark any layout that tries to use the marked deviceid as failed.
      
      Inodes with a layout marked as fails will not use the layout for I/O, and will
      not perform any more layoutgets.
      Inodes without a layout will still do layoutget, but the layout will get
      marked immediately.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      568e8c49