1. 01 6月, 2012 7 次提交
  2. 12 4月, 2012 1 次提交
  3. 18 2月, 2012 1 次提交
  4. 15 2月, 2012 4 次提交
  5. 01 2月, 2012 1 次提交
  6. 20 8月, 2011 1 次提交
  7. 28 10月, 2010 1 次提交
  8. 02 10月, 2010 1 次提交
  9. 30 3月, 2010 1 次提交
    • T
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo 提交于
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
      
      percpu.h is included by sched.h and module.h and thus ends up being
      included when building most .c files.  percpu.h includes slab.h which
      in turn includes gfp.h making everything defined by the two files
      universally available and complicating inclusion dependencies.
      
      percpu.h -> slab.h dependency is about to be removed.  Prepare for
      this change by updating users of gfp and slab facilities include those
      headers directly instead of assuming availability.  As this conversion
      needs to touch large number of source files, the following script is
      used as the basis of conversion.
      
        http://userweb.kernel.org/~tj/misc/slabh-sweep.py
      
      The script does the followings.
      
      * Scan files for gfp and slab usages and update includes such that
        only the necessary includes are there.  ie. if only gfp is used,
        gfp.h, if slab is used, slab.h.
      
      * When the script inserts a new include, it looks at the include
        blocks and try to put the new include such that its order conforms
        to its surrounding.  It's put in the include block which contains
        core kernel includes, in the same order that the rest are ordered -
        alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
        doesn't seem to be any matching order.
      
      * If the script can't find a place to put a new include (mostly
        because the file doesn't have fitting include block), it prints out
        an error message indicating which .h file needs to be added to the
        file.
      
      The conversion was done in the following steps.
      
      1. The initial automatic conversion of all .c files updated slightly
         over 4000 files, deleting around 700 includes and adding ~480 gfp.h
         and ~3000 slab.h inclusions.  The script emitted errors for ~400
         files.
      
      2. Each error was manually checked.  Some didn't need the inclusion,
         some needed manual addition while adding it to implementation .h or
         embedding .c file was more appropriate for others.  This step added
         inclusions to around 150 files.
      
      3. The script was run again and the output was compared to the edits
         from #2 to make sure no file was left behind.
      
      4. Several build tests were done and a couple of problems were fixed.
         e.g. lib/decompress_*.c used malloc/free() wrappers around slab
         APIs requiring slab.h to be added manually.
      
      5. The script was run on all .h files but without automatically
         editing them as sprinkling gfp.h and slab.h inclusions around .h
         files could easily lead to inclusion dependency hell.  Most gfp.h
         inclusion directives were ignored as stuff from gfp.h was usually
         wildly available and often used in preprocessor macros.  Each
         slab.h inclusion directive was examined and added manually as
         necessary.
      
      6. percpu.h was updated not to include slab.h.
      
      7. Build test were done on the following configurations and failures
         were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
         distributed build env didn't work with gcov compiles) and a few
         more options had to be turned off depending on archs to make things
         build (like ipr on powerpc/64 which failed due to missing writeq).
      
         * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
         * powerpc and powerpc64 SMP allmodconfig
         * sparc and sparc64 SMP allmodconfig
         * ia64 SMP allmodconfig
         * s390 SMP allmodconfig
         * alpha SMP allmodconfig
         * um on x86_64 SMP allmodconfig
      
      8. percpu.h modifications were reverted so that it could be applied as
         a separate patch and serve as bisection point.
      
      Given the fact that I had only a couple of failures from tests on step
      6, I'm fairly confident about the coverage of this conversion patch.
      If there is a breakage, it's likely to be something in one of the arch
      headers which should be easily discoverable easily on most builds of
      the specific arch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Guess-its-ok-by: NChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      5a0e3ad6
  10. 27 1月, 2010 1 次提交
  11. 19 11月, 2009 1 次提交
  12. 12 11月, 2009 1 次提交
  13. 07 5月, 2009 1 次提交
    • J
      lockd: fix list corruption on lockd restart · 89996df4
      J. Bruce Fields 提交于
      If lockd is signalled soon enough after restart then locks_start_grace()
      will try to re-add an entry to a list and trigger a lock corruption
      warning.
      
      Thanks to Wang Chen for the problem report and diagnosis.
      
      WARNING: at lib/list_debug.c:26 __list_add+0x27/0x5c()
      ...
      list_add corruption. next->prev should be prev (ef8fe958), but was ef8ff128.  (next=ef8ff128).
      ...
      Pid: 23062, comm: lockd Tainted: G        W  2.6.30-rc2 #3
      Call Trace:
      [<c042d5b5>] warn_slowpath+0x71/0xa0
      [<c0422a96>] ? update_curr+0x11d/0x125
      [<c044b12d>] ? trace_hardirqs_on_caller+0x18/0x150
      [<c044b270>] ? trace_hardirqs_on+0xb/0xd
      [<c051c61a>] ? _raw_spin_lock+0x53/0xfa
      [<c051c89f>] __list_add+0x27/0x5c
      [<ef8f6daa>] locks_start_grace+0x22/0x30 [lockd]
      [<ef8f34da>] set_grace_period+0x39/0x53 [lockd]
      [<c06b8921>] ? lock_kernel+0x1c/0x28
      [<ef8f3558>] lockd+0x64/0x164 [lockd]
      [<c044b12d>] ? trace_hardirqs_on_caller+0x18/0x150
      [<c04227b0>] ? complete+0x34/0x3e
      [<ef8f34f4>] ? lockd+0x0/0x164 [lockd]
      [<ef8f34f4>] ? lockd+0x0/0x164 [lockd]
      [<c043dd42>] kthread+0x45/0x6b
      [<c043dcfd>] ? kthread+0x0/0x6b
      [<c0403c23>] kernel_thread_helper+0x7/0x10
      Reported-by: NWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      Cc: stable@kernel.org
      89996df4
  14. 29 3月, 2009 4 次提交
  15. 08 1月, 2009 2 次提交
  16. 07 1月, 2009 4 次提交
  17. 24 12月, 2008 1 次提交
  18. 25 11月, 2008 1 次提交
  19. 05 10月, 2008 2 次提交
  20. 04 10月, 2008 1 次提交
    • J
      nfsd: common grace period control · af558e33
      J. Bruce Fields 提交于
      Rewrite grace period code to unify management of grace period across
      lockd and nfsd.  The current code has lockd and nfsd cooperate to
      compute a grace period which is satisfactory to them both, and then
      individually enforce it.  This creates a slight race condition, since
      the enforcement is not coordinated.  It's also more complicated than
      necessary.
      
      Here instead we have lockd and nfsd each inform common code when they
      enter the grace period, and when they're ready to leave the grace
      period, and allow normal locking only after both of them are ready to
      leave.
      
      We also expect the locks_start_grace()/locks_end_grace() interface here
      to be simpler to build on for future cluster/high-availability work,
      which may require (for example) putting individual filesystems into
      grace, or enforcing grace periods across multiple cluster nodes.
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      af558e33
  21. 30 9月, 2008 3 次提交
    • J
      lockd: don't depend on lockd main loop to end grace · c8ab5f2a
      J. Bruce Fields 提交于
      End lockd's grace period using schedule_delayed_work() instead of a
      check on every pass through the main loop.
      
      After a later patch, we'll depend on lockd to end its grace period even
      if it's not currently handling requests; so it shouldn't depend on being
      woken up from the main loop to do so.
      
      Also, Nakano Hiroaki (who independently produced a similar patch)
      noticed that the current behavior is buggy in the face of jiffies
      wraparound:
      
      	"lockd uses time_before() to determine whether the grace period
      	has expired. This would seem to be enough to avoid timer
      	wrap-around issues, but, unfortunately, that is not the case.
      	The time_* family of comparison functions can be safely used to
      	compare jiffies relatively close in time, but they stop working
      	after approximately LONG_MAX/2 ticks. nfsd can suffer this
      	problem because the time_before() comparison in lockd() is not
      	performed until the first request comes in, which means that if
      	there is no lockd traffic for more than LONG_MAX/2 ticks we are
      	screwed.
      
      	"The implication of this is that once time_before() starts
      	misbehaving any attempt from a NFS client to execute fcntl()
      	will be received with a NLM_LCK_DENIED_GRACE_PERIOD message for
      	25 days (assuming HZ=1000). In other words, the 50 seconds grace
      	period could turn into a grace period of 50 days or more.
      
      	"Note: This bug was analyzed independently by Oda-san
      	<oda@valinux.co.jp> and myself."
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      Cc: Nakano Hiroaki <nakano.hiroaki@oss.ntt.co.jp>
      Cc: Itsuro Oda <oda@valinux.co.jp>
      c8ab5f2a
    • J
      locks: allow lockd to process blocked locks during grace period · 8fafa900
      J. Bruce Fields 提交于
      The check here is currently harmless but unnecessary, since, as the
      comment notes, there aren't any blocked-lock callbacks to process
      during the grace period anyway.
      
      And eventually we want to allow multiple grace periods that come and go
      for different filesystems over the course of the lifetime of lockd, at
      which point this check is just going to get in the way.
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      8fafa900
    • C
      SUNRPC: Add address family field to svc_serv data structure · e851db5b
      Chuck Lever 提交于
      Introduce and initialize an address family field in the svc_serv structure.
      
      This field will determine what family to use for the service's listener
      sockets and what families are advertised via the local rpcbind daemon.
      Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      e851db5b