1. 18 5月, 2010 6 次提交
  2. 16 5月, 2010 1 次提交
  3. 15 5月, 2010 1 次提交
    • A
      Fix the regression created by "set S_DEAD on unlink()..." commit · d83c49f3
      Al Viro 提交于
      1) i_flags simply doesn't work for mount/unlink race prevention;
      we may have many links to file and rm on one of those obviously
      shouldn't prevent bind on top of another later on.  To fix it
      right way we need to mark _dentry_ as unsuitable for mounting
      upon; new flag (DCACHE_CANT_MOUNT) is protected by d_flags and
      i_mutex on the inode in question.  Set it (with dont_mount(dentry))
      in unlink/rmdir/etc., check (with cant_mount(dentry)) in places
      in namespace.c that used to check for S_DEAD.  Setting S_DEAD
      is still needed in places where we used to set it (for directories
      getting killed), since we rely on it for readdir/rmdir race
      prevention.
      
      2) rename()/mount() protection has another bogosity - we unhash
      the target before we'd checked that it's not a mountpoint.  Fixed.
      
      3) ancient bogosity in pivot_root() - we locked i_mutex on the
      right directory, but checked S_DEAD on the different (and wrong)
      one.  Noticed and fixed.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      d83c49f3
  4. 14 5月, 2010 3 次提交
  5. 13 5月, 2010 5 次提交
  6. 12 5月, 2010 12 次提交
  7. 11 5月, 2010 5 次提交
  8. 10 5月, 2010 3 次提交
    • A
      cpuidle: Fix incorrect optimization · 1c6fe036
      Arjan van de Ven 提交于
      commit 672917dc ("cpuidle: menu governor: reduce latency on exit")
      added an optimization, where the analysis on the past idle period moved
      from the end of idle, to the beginning of the new idle.
      
      Unfortunately, this optimization had a bug where it zeroed one key
      variable for new use, that is needed for the analysis.  The fix is
      simple, zero the variable after doing the work from the previous idle.
      
      During the audit of the code that found this issue, another issue was
      also found; the ->measured_us data structure member is never set, a
      local variable is always used instead.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Cc: Corrado Zoccolo <czoccolo@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1c6fe036
    • A
      ondemand: Make the iowait-is-busy time a sysfs tunable · 19379b11
      Arjan van de Ven 提交于
      Pavel Machek pointed out that not all CPUs have an efficient
      idle at high frequency. Specifically, older Intel and various
      AMD cpus would get a higher powerusage when copying files from
      USB.
      
      Mike Chan pointed out that the same is true for various ARM
      chips as well.
      
      Thomas Renninger suggested to make this a sysfs tunable with a
      reasonable default.
      
      This patch adds a sysfs tunable for the new behavior, and uses
      a very simple function to determine a reasonable default,
      depending on the CPU vendor/type.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Acked-by: NRik van Riel <riel@redhat.com>
      Acked-by: NPavel Machek <pavel@ucw.cz>
      Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: davej@redhat.com
      LKML-Reference: <20100509082651.46914d04@infradead.org>
      [ minor tidyup ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      19379b11
    • A
      ondemand: Solve a big performance issue by counting IOWAIT time as busy · 6b8fcd90
      Arjan van de Ven 提交于
      The ondemand cpufreq governor uses CPU busy time (e.g. not-idle
      time) as a measure for scaling the CPU frequency up or down.
      If the CPU is busy, the CPU frequency scales up, if it's idle,
      the CPU frequency scales down. Effectively, it uses the CPU busy
      time as proxy variable for the more nebulous "how critical is
      performance right now" question.
      
      This algorithm falls flat on its face in the light of workloads
      where you're alternatingly disk and CPU bound, such as the ever
      popular "git grep", but also things like startup of programs and
      maildir using email clients... much to the chagarin of Andrew
      Morton.
      
      This patch changes the ondemand algorithm to count iowait time
      as busy, not idle, time. As shown in the breakdown cases above,
      iowait is performance critical often, and by counting iowait,
      the proxy variable becomes a more accurate representation of the
      "how critical is performance" question.
      
      The problem and fix are both verified with the "perf timechar"
      tool.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NDave Jones <davej@redhat.com>
      Reviewed-by: NRik van Riel <riel@redhat.com>
      Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100509082606.3d9f00d0@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      6b8fcd90
  9. 09 5月, 2010 1 次提交
  10. 08 5月, 2010 3 次提交