1. 10 Oct, 2002 8 commits
    • John Stultz's avatar
      [PATCH] linux-2.5.41_timer-changes_A4 (1/3 - infrastructure) · c710b958
      John Stultz authored
              The i386 time.c code is turning into a mess. We've got multiple
      functions that do the same thing, only with different hardware, all
      surrounded #ifdefs and even more difficult to follow #ifndefs. George
      Anzinger is introducing a new ACPIpm time source, I'm going to attempt
      to add the cyclone counter as a time source, and in the future there
      will be HPET to deal with. These will not go in cleanly together as
      things are now.
      
              Inspired by suggestions from Alan, this collection of patches
      tries to clean up time.c by breaking out the PIT and TSC specific parts
      into their own files. Additionally the patch creates an abstract
      interface to use these existing time soruces, as well as make it easier
      to add future time sources.
      
              It introduces "struct timer_ops" which gives the time code a
      clear interface to use these different time sources. It also allows for
      clearer conditional compilation of these various time sources.
      
              This first patch (part 1 of 3) provides the infrastructure
      needed via the timer_ops structure, as well as the select_timer()
      function for choosing the best available timer.
      c710b958
    • Andrew Morton's avatar
      [PATCH] make readv/writev return 0 for 0 segments · 6a839d30
      Andrew Morton authored
      Should resolve an ongoing fiasco concerning what we should return to
      userspace if they do a readv or writev of zero segments.
      
      SuS is ambiguous, but implies EINVAL.  We're currently returning
      EINVAL, but 2.4 returns zero.
      
      I think zero makes more sense, and it is what 2.4 does.
      6a839d30
    • 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 32 commits