1. 09 Dec, 2009 3 commits
  2. 06 Dec, 2009 2 commits
    • Peter Zijlstra's avatar
      sched: Fix balance vs hotplug race · 6ad4c188
      Peter Zijlstra authored
      Since (e761b772: cpu hotplug, sched: Introduce cpu_active_map and redo
      sched domain managment) we have cpu_active_mask which is suppose to rule
      scheduler migration and load-balancing, except it never (fully) did.
      
      The particular problem being solved here is a crash in try_to_wake_up()
      where select_task_rq() ends up selecting an offline cpu because
      select_task_rq_fair() trusts the sched_domain tree to reflect the
      current state of affairs, similarly select_task_rq_rt() trusts the
      root_domain.
      
      However, the sched_domains are updated from CPU_DEAD, which is after the
      cpu is taken offline and after stop_machine is done. Therefore it can
      race perfectly well with code assuming the domains are right.
      
      Cure this by building the domains from cpu_active_mask on
      CPU_DOWN_PREPARE.
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      6ad4c188
    • Geert Uytterhoeven's avatar
      cpumask: Fix generate_sched_domains() for UP · e1b8090b
      Geert Uytterhoeven authored
      Commit acc3f5d7 ("cpumask:
      Partition_sched_domains takes array of cpumask_var_t") changed
      the function signature of generate_sched_domains() for the
      CONFIG_SMP=y case, but forgot to update the corresponding
      function for the CONFIG_SMP=n case, causing:
      
        kernel/cpuset.c:2073: warning: passing argument 1 of 'generate_sched_domains' from incompatible pointer type
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      LKML-Reference: <alpine.DEB.2.00.0912062038070.5693@ayla.of.borg>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      e1b8090b
  3. 05 Dec, 2009 25 commits
  4. 03 Dec, 2009 10 commits
    • Ingo Molnar's avatar
      Merge branch 'perf/probes' into perf/core · d103d01e
      Ingo Molnar authored
      Merge reason: add these fixes to 'perf probe'.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d103d01e
    • Ingo Molnar's avatar
      Merge branch 'perf/mce' into perf/core · 26fb20d0
      Ingo Molnar authored
      Merge reason: It's ready for v2.6.33.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      26fb20d0
    • Ingo Molnar's avatar
      Merge branch 'perf/scripting' into perf/core · 23ba90e3
      Ingo Molnar authored
      Merge reason: it's ready for v2.6.33.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      23ba90e3
    • Mikael Pettersson's avatar
      x86, apic: Enable lapic nmi watchdog on AMD Family 11h · 7d1849af
      Mikael Pettersson authored
      The x86 lapic nmi watchdog does not recognize AMD Family 11h,
      resulting in:
      
        NMI watchdog: CPU not supported
      
      As far as I can see from available documentation (the BKDM),
      family 11h looks identical to family 10h as far as the PMU
      is concerned.
      
      Extending the check to accept family 11h results in:
      
        Testing NMI watchdog ... OK.
      
      I've been running with this change on a Turion X2 Ultra ZM-82
      laptop for a couple of weeks now without problems.
      Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
      Cc: Andreas Herrmann <andreas.herrmann3@amd.com>
      Cc: Joerg Roedel <joerg.roedel@amd.com>
      Cc: <stable@kernel.org>
      LKML-Reference: <19223.53436.931768.278021@pilspetsen.it.uu.se>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      7d1849af
    • Steven Whitehouse's avatar
      GFS2: Fix glock refcount issues · 26bb7505
      Steven Whitehouse authored
      This patch fixes some ref counting issues. Firstly by moving
      the point at which we drop the ref count after a dlm lock
      operation has completed we ensure that we never call
      gfs2_glock_hold() on a lock with a zero ref count.
      
      Secondly, by using atomic_dec_and_lock() in gfs2_glock_put()
      we ensure that at no time will a glock with zero ref count
      appear on the lru_list. That means that we can remove the
      check for this in our shrinker (which was racy).
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      26bb7505
    • Wu Fengguang's avatar
      writeback: remove unused nonblocking and congestion checks (gfs2) · c29cd900
      Wu Fengguang authored
      No one is calling wb_writeback and write_cache_pages with
      wbc.nonblocking=1 any more. And lumpy pageout will want to do
      nonblocking writeback without the congestion wait.
      Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      c29cd900
    • Benjamin Marzinski's avatar
      GFS2: drop rindex glock to refresh rindex list · 9ae3c6de
      Benjamin Marzinski authored
      When a gfs2 filesystem is grown, it needs to rebuild the rindex list to be able
      to use the new space.  gfs2 does this when the rindex is marked not uptodate,
      which happens when the rindex glock is dropped.  However, on a single node
      setup, there is never any reason to drop the rindex glock, so gfs2 never
      invalidates the the rindex. This patch makes gfs2 automatically drop the
      rindex glock after filesystem grows, so it can refresh the rindex list.
      Signed-off-by: default avatarBenjamin Marzinski <bmarzins@redhat.com>
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      9ae3c6de
    • Steven Whitehouse's avatar
      GFS2: Tag all metadata with jid · 0ab7d13f
      Steven Whitehouse authored
      There are two spare field in the header common to all GFS2
      metadata. One is just the right size to fit a journal id
      in it, and this patch updates the journal code so that each
      time a metadata block is modified, we tag it with the journal
      id of the node which is performing the modification.
      
      The reason for this is that it should make it much easier to
      debug issues which arise if we can tell which node was the
      last to modify a particular metadata block.
      
      Since the field is updated before the block is written into
      the journal, each journal should only contain metadata which
      is tagged with its own journal id. The one exception to this
      is the journal header block, which might have a different node's
      id in it, if that journal was recovered by another node in the
      cluster.
      
      Thus each journal will contain a record of which nodes recovered
      it, via the journal header.
      
      The other field in the metadata header could potentially be
      used to hold information about what kind of operation was
      performed, but for the time being we just zero it on each
      transaction so that if we use it for that in future, we'll
      know that the information (where it exists) is reliable.
      
      I did consider using the other field to hold the journal
      sequence number, however since in GFS2's journaling we write
      the modified data into the journal and not the original
      data, this gives no information as to what action caused the
      modification, so I think we can probably come up with a better
      use for those 64 bits in the future.
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      0ab7d13f
    • Steven Whitehouse's avatar
      GFS2: Locking order fix in gfs2_check_blk_state · 2c776349
      Steven Whitehouse authored
      In some cases we already have the rindex lock when
      we enter this function.
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      2c776349
    • Steven Whitehouse's avatar
      GFS2: Remove dirent_first() function · 1579343a
      Steven Whitehouse authored
      This function only had one caller left, and that caller only
      called it for leaf blocks, hence one branch of the "if" was
      never taken. In addition the call to get_left had already
      verified the metadata type, so the function can be reduced
      to a single line of code in its caller.
      Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
      1579343a