1. 25 Nov, 2002 33 commits
  2. 22 Nov, 2002 7 commits
    • Linus Torvalds's avatar
      Linux v2.5.49 · cebce9d8
      Linus Torvalds authored
      cebce9d8
    • Linus Torvalds's avatar
      Merge bk://bk.arm.linux.org.uk · 1ca4ebb9
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      1ca4ebb9
    • Russell King's avatar
      [ARM] Fixups for 2.5.48-bkcur · 7ad26fa6
      Russell King authored
      Fix compilation errors for do_fork() and print_symbol()
      7ad26fa6
    • Linus Torvalds's avatar
      Merge bk://cifs.bkbits.net/linux-2.5cifs · 32ff6d01
      Linus Torvalds authored
      into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
      32ff6d01
    • Andrew Morton's avatar
      [PATCH] no-buffer-head ext2 option · b1ad1f4e
      Andrew Morton authored
      Implements a new set of block address_space_operations which will never
      attach buffer_heads to file pagecache.  These can be turned on for ext2
      with the `nobh' mount option.
      
      During write-intensive testing on a 7G machine, total buffer_head
      storage remained below 0.3 megabytes.  And those buffer_heads are
      against ZONE_NORMAL pagecache and will be reclaimed by ZONE_NORMAL
      memory pressure.
      
      This work is, of course, a special for the huge highmem machines.
      Possibly it obsoletes the buffer_heads_over_limit stuff (which doesn't
      work terribly well), but that code is simple, and will provide relief
      for other filesystems.
      
      
      It should be noted that the nobh_prepare_write() function and the
      PageMappedToDisk() infrastructure is what is needed to solve the
      problem of user data corruption when the filesystem which backs a
      sparse MAP_SHARED mapping runs out of space.  We can use this code in
      filemap_nopage() to ensure that all mapped pages have space allocated
      on-disk.  Deliver SIGBUS on ENOSPC.
      
      This will require a new address_space op, I expect.
      b1ad1f4e
    • Andrew Morton's avatar
      [PATCH] handle zones which are full of unreclaimable pages · 36fb7f84
      Andrew Morton authored
      This patch is a general solution to the situation where a zone is full
      of pinned pages.
      
      This can come about if:
      
      a) Someone has allocated all of ZONE_DMA for IO buffers
      
      b) Some application is mlocking some memory and a zone ends up full
         of mlocked pages (can happen on a 1G ia32 system)
      
      c) All of ZONE_HIGHMEM is pinned in hugetlb pages (can happen on 1G
         machines)
      
      We'll currently burn 10% of CPU in kswapd when this happens, although
      it is quite hard to trigger.
      
      The algorithm is:
      
      - If page reclaim has scanned 2 * the total number of pages in the
        zone and there have been no pages freed in that zone then mark the
        zone as "all unreclaimable".
      
      - When a zone is "all unreclaimable" page reclaim almost ignores it.
        We will perform a "light" scan at DEF_PRIORITY (typically 1/4096'th of
        the zone, or 64 pages) and then forget about the zone.
      
      - When a batch of pages are freed into the zone, clear its "all
        unreclaimable" state and start full scanning again.  The assumption
        being that some state change has come about which will make reclaim
        successful again.
      
        So if a "light scan" actually frees some pages, the zone will revert to
        normal state immediately.
      
      So we're effectively putting the zone into "low power" mode, and lightly
      polling it to see if something has changed.
      
      The code works OK, but is quite hard to test - I mainly tested it by
      pinning all highmem in hugetlb pages.
      36fb7f84
    • Andrew Morton's avatar
      [PATCH] strengthen the `incremental min' logic in the page · fee2b68d
      Andrew Morton authored
      Strengthen the `incremental min' logic in the page allocator.
      
      Currently it is allowing the allocation to succeed if the zone has
      free_pages >= pages_high.
      
      This was to avoid a lockup corner case in which all the zones were at
      pages_high so reclaim wasn't doing anything, but the incremental min
      refused to take pages from those zones anyway.
      
      But we want the incremental min zone protection to work.  So:
      
      - Only allow the allocator to dip below the incremental min if he
        cannot run direct reclaim.
      
      - Change the page reclaim code so that on the direct reclaim path,
        the caller can free pages beyond ->pages_high.  So if the incremental
        min test fails, the caller will go and free some more memory.
      
        Eventually, the caller will have freed enough memory for the
        incremental min test to pass against one of the zones.
      fee2b68d