1. 25 Sep, 2009 2 commits
    • Artem Bityutskiy's avatar
      This patch adds new operation to struct super_operations - sync_inodes, · f3708e40
      Artem Bityutskiy authored
      generic implementaion and changes fs-writeback.c:sync_sb_inodes() to call
      filesystem's sync_inodes if it is defined or generic implementaion otherwise.
      This new operation allows filesystem to decide itself what to flush.
      
      Reiser4 flushes dirty pages on basic of atoms, not of inodes.  sync_sb_inodes
      used to call address space flushing method (writepages) for every dirty inode.
       For reiser4 it caused having to commit atoms unnecessarily often.  This
      turned into substantial slowdown.  Having this method helped to fix that
      problem.
      
      akpm: this patch needs to be chnaged to remove the `sb' arg.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Cc: Edward Shishkin <edward.shishkin@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      f3708e40
    • Edward Shishkin's avatar
      In accordance with reiser4 transactional model every dirty page should be · 43d22bf1
      Edward Shishkin authored
      "captured" by some atom.  However, outside reiser4 context dirty page can
      not be captured in some cases, as it is accompanied with specific work
      (jnode creation, etc).  Reiser4 recognizes such "anonymous" pages (i.e. 
      pages that were dirtied outside of reiser4) by the tag
      PAGECACHE_TAG_DIRTY.  Pages dirtied inside reiser4 context are not tagged
      at all: we don't need this.  Indeed, once page is dirtied and captured, it
      is attached to a jnode (a special header to keep a track of transactions).
      
      reiser4_set_page_dirty_internal() was the internal reiser4 function that
      set dirty bit without tagging the page.  Having such internal function led
      to real problems (incorrect task io accounting, etc.  because of not
      updating this internal "friend").
      
      Solution:
      
      The following patch adds a core library function that sets a dirty bit
      without tagging the page.
      
      Signed-off-by: Edward Shishkin<edward.shishkin@gmail.com>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      43d22bf1
  2. 04 Jun, 2009 1 commit
  3. 24 Aug, 2009 1 commit
  4. 04 Jun, 2009 1 commit
  5. 28 Oct, 2009 7 commits
  6. 30 Oct, 2009 2 commits
    • Andrew Morton's avatar
      Cc: Jeff Moyer <jmoyer@redhat.com> · 33b60a5f
      Andrew Morton authored
      Cc: Zach Brown <zach.brown@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      33b60a5f
    • Jeff Moyer's avatar
      Intel reported a performance regression caused by the following commit: · 621687ce
      Jeff Moyer authored
      commit 848c4dd5
      Author: Zach Brown <zach.brown@oracle.com>
      Date:   Mon Aug 20 17:12:01 2007 -0700
      
          dio: zero struct dio with kzalloc instead of manually
      
          This patch uses kzalloc to zero all of struct dio rather than
          manually trying to track which fields we rely on being zero.  It
          passed aio+dio stress testing and some bug regression testing on
          ext3.
      
          This patch was introduced by Linus in the conversation that lead up
          to Badari's minimal fix to manually zero .map_bh.b_state in commit:
      
            6a648fa7
      
          It makes the code a bit smaller.  Maybe a couple fewer cachelines to
          load, if we're lucky:
      
             text    data     bss     dec     hex filename
          3285925  568506 1304616 5159047  4eb887 vmlinux
          3285797  568506 1304616 5158919  4eb807 vmlinux.patched
      
          I was unable to measure a stable difference in the number of cpu
          cycles spent in blockdev_direct_IO() when pushing aio+dio 256K reads
          at ~340MB/s.
      
          So the resulting intent of the patch isn't a performance gain but to
          avoid exposing ourselves to the risk of finding another field like
          .map_bh.b_state where we rely on zeroing but don't enforce it in the
          code.
      
      Zach surmised that zeroing out the page array was what caused most of
      the problem, and suggested the approach taken in the attached patch for
      resolving the issue.  Intel re-tested with this patch and saw a 0.6%
      performance gain (the original regression was 0.5%).
      Signed-off-by: default avatarJeff Moyer <jmoyer@redhat.com>
      Acked-by: default avatarZach Brown <zach.brown@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      621687ce
  7. 14 Oct, 2009 1 commit
  8. 16 Oct, 2009 1 commit
  9. 30 Sep, 2009 3 commits
  10. 16 Oct, 2009 1 commit
  11. 09 Oct, 2009 1 commit
  12. 30 Sep, 2009 1 commit
  13. 24 Aug, 2009 1 commit
  14. 15 Oct, 2009 1 commit
  15. 29 Sep, 2009 1 commit
  16. 06 Oct, 2009 7 commits
  17. 13 Oct, 2009 1 commit
  18. 24 Sep, 2009 1 commit
    • Oleg Nesterov's avatar
      Thanks to Roland who pointed out de_thread() issues. · 7b9f1838
      Oleg Nesterov authored
      Currently we add sub-threads to ->real_parent->children list.  This buys
      nothing but slows down do_wait().
      
      With this patch ->children contains only main threads (group leaders). 
      The only complication is that forget_original_parent() should iterate over
      sub-threads by hand, and de_thread() needs another list_replace() when it
      changes ->group_leader.
      
      Henceforth do_wait_thread() can never see task_detached() && !EXIT_DEAD
      tasks, we can remove this check (and we can unify do_wait_thread() and
      ptrace_do_wait()).
      
      This change can confuse the optimistic search in mm_update_next_owner(),
      but this is fixable and minor.
      
      Perhaps badness() and oom_kill_process() should be updated, but they
      should be fixed in any case.
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Roland McGrath <roland@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Ratan Nalumasu <rnalumasu@gmail.com>
      Cc: Vitaly Mayatskikh <vmayatsk@redhat.com>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      7b9f1838
  19. 25 Sep, 2009 1 commit
    • Roland McGrath's avatar
      This adds the utrace facility, a new modular interface in the kernel for · 582156fe
      Roland McGrath authored
      implementing user thread tracing and debugging.  This fits on top of the
      tracehook_* layer, so the new code is well-isolated.
      
      The new interface is in <linux/utrace.h> and the DocBook utrace book
      describes it.  It allows for multiple separate tracing engines to work in
      parallel without interfering with each other.  Higher-level tracing
      facilities can be implemented as loadable kernel modules using this layer.
      
      The new facility is made optional under CONFIG_UTRACE.  When this is not
      enabled, no new code is added.  It can only be enabled on machines that
      have all the prerequisites and select CONFIG_HAVE_ARCH_TRACEHOOK.
      
      In this initial version, utrace and ptrace do not play together at all. 
      If ptrace is attached to a thread, the attach calls in the utrace kernel
      API return -EBUSY.  If utrace is attached to a thread, the PTRACE_ATTACH
      or PTRACE_TRACEME request will return EBUSY to userland.  The old ptrace
      code is otherwise unchanged and nothing using ptrace should be affected by
      this patch as long as utrace is not used at the same time.  In the future
      we can clean up the ptrace implementation and rework it to use the utrace
      API.
      
      [oleg@redhat.com: kill exclude_xtrace logic]
      Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      582156fe
  20. 30 Oct, 2009 1 commit
  21. 16 Oct, 2009 4 commits