1. 10 Oct, 2002 6 commits
    • Andrew Morton's avatar
      [PATCH] remove the sched_yield from the ext3 fsync path · 522864f4
      Andrew Morton authored
      The changed sched_yield() semantics have made ext3's transaction
      batching terribly slow.
      
      Apparently a schedule() fixes that, although it probably breaks
      transaction batching.
      
      This patch largely fixes my complaints about the new scheduler being
      extremely sluggish to interactive applications.  Evidently those
      applications were calling fsync() and were spending extremely long
      periods in sched_yield().
      522864f4
    • Andrew Morton's avatar
      [PATCH] remove radix_tree_reserve() · 6b1ba797
      Andrew Morton authored
      From Hugh Dickins.
      
      radix_tree_reserve() exists solely for the tmpfs move_to_swap_cache()
      and move_from_swap_cache() functions, and yet they don't need it: there
      is no problem in the one page being simultaneously listed in two radix
      trees (while both locks are held).  Use radix_tree_insert(), and remove
      radix_tree_reserve(); also removed a few blank lines.
      6b1ba797
    • Andrew Morton's avatar
      [PATCH] fix the raw driver · 60c6d43b
      Andrew Morton authored
      Fix the raw driver by tricking it into performing O_DIRECT IO against
      the bound blockdev.
      
      - rewrite the i_mapping for /dev/raw/raw0 to point at the same thing
        as bdev->bd_inode->i_mapping.  We've performed a bdget() against the
        blockdev, which should pin it for the correct lifetime.
      
      - set the O_DIRECT bit on the caller's file->flags.
      60c6d43b
    • Andrew Morton's avatar
      [PATCH] move_one_page atomicity fix · d8f299c2
      Andrew Morton authored
      The atomicicty fix for move_one_page() was not quite right.
      
      We only do the page_table_present() test if CONFIG_HIGHPTE=y.  Which is
      fine, but even with CONFIG_HIGHPTE=n, the pte mapping functions still
      do an inc_preempt_count() due to their unconditional kmap_atomic().  So
      we get a might_sleep() warning.
      
      The warning is actually bogus, because those pte's are always in
      direct-mapped memory.
      
      So hm.  Three fixes suggest themselves:
      
      1: Run the page_table_present() test if CONFIG_HIGHMEM.
      
         Rejected: penalises non-pte_highmem setups
      
      2: Make kmap_atomic() not do inc_preempt_count() is the page was
         direct mapped.
      
         Rejected: I don't think we want kmap_atomic side effects to be
         varying according to the page which was passed.
      
      3: Change the pte mapping functions so they don't run kmap_atomic at
         all if CONFIG_HIGHPTE=n
      
         This is what I did.  And guess what?  For CONFIG_HIGHMEM=y,
         CONFIG_HIGHPTE=n this patch shrinks the kernel by 5 kbytes.  Because
         kmap_atomic is inlined.
      
         The lesson: we do way too much damn inlining.
      d8f299c2
    • Andrew Morton's avatar
      [PATCH] mremap use-after-free bugfix · f0f5d073
      Andrew Morton authored
      I have invented a new software development methodology! You send an
      email to Hugh saying "I don't have the foggiest idea why this guy's
      kernel is oopsing" and next morning, you get a patch! I shall patent
      this.
      
      Since 2.5.3, move_vma() has been passing a freed vma into
      move_page_tables().  Fix it to move back to the previous vma in the
      list if we're about to delete this one.
      
      Thanks to Morten Helgesen for patient reporting, diagnosis and testing.
      f0f5d073
    • Ingo Molnar's avatar
      [PATCH] timer cleanups · d4979c79
      Ingo Molnar authored
      This is my latest timer patchset, it makes del_timer_sync() a bit more
      robust wrt.  code that re-adds timers from the timer handler.
      
      Other changes in the patch:
      
       - clean up cascading a bit.
      
       - do not save flags in __run_timer_list - we enter from an irqs-enabled
         tasklet.
      d4979c79
  2. 09 Oct, 2002 34 commits