Only in 2.4.10pre10aa1: 00_3c59x-zerocopy-3 Only in 2.4.10pre10aa1: 00_alloc_skb-gfp_dma-bugcheck-1 Only in 2.4.10pre10aa1: 00_alpha-compile-1 Only in 2.4.10pre10aa1: 00_alpha-pc_keyb-1 Only in 2.4.10pre10aa1: 00_alpha-personality-1 Only in 2.4.10pre10aa1: 00_alpha-sysrqT-1 Only in 2.4.10pre10aa1: 00_bh-async-3 Only in 2.4.10pre10aa1: 00_boot-serial-console-1 Only in 2.4.10pre10aa1: 00_cachelinealigned-in-smp-2 Only in 2.4.10pre10aa1: 00_clear_pagetable-smp-1 Only in 2.4.10pre10aa1: 00_copy_strings-str-1 Only in 2.4.10pre10aa1: 00_cpudata-cachelinealigned-1 Only in 2.4.10pre10aa1: 00_delayed-writes-fix-1 Only in 2.4.10pre10aa1: 00_do_swap_page-fix-1 Only in 2.4.10pre10aa1: 00_double-buffer-pass-2 Only in 2.4.10pre10aa1: 00_drop_async-io-get_bh-2 Only in 2.4.10pre10aa1: 00_eepro100-alpha-1 Only in 2.4.10pre10aa1: 00_exception-table-1 Only in 2.4.10pre10aa1: 00_ext2-lookup-rotate-1 Only in 2.4.10pre10aa1: 00_i_blocks-pipe-socket-1 Only in 2.4.10pre10aa1: 00_ide-oops-1 Only in 2.4.10pre10aa1: 00_initrd-release-blkdev-1 Only in 2.4.10pre10aa1: 00_invalidate_device-shrink-dcache-1 Only in 2.4.10pre10aa1: 00_io_apic-lock-1 Only in 2.4.10pre10aa1: 00_iput-debug-1 Only in 2.4.10pre10aa1: 00_ipv6-source-routing-1 Only in 2.4.10pre10aa1: 00_irq-call-prediction-1 Only in 2.4.10pre10aa1: 00_jens-loop-noop-nobounce-1 Only in 2.4.10pre10aa1: 00_km_user-2 Only in 2.4.10pre10aa1: 00_kupdate-large-interval-1 Only in 2.4.10pre10aa1: 00_megaraid-paranoid-1 Only in 2.4.10pre10aa1: 00_meminfo-wraparound-2 Only in 2.4.10pre10aa1: 00_mmap-addr-hint-1 Only in 2.4.10pre10aa1: 00_o_direct-16 Only in 2.4.10pre10aa1: 00_pagetable-fast-2 Only in 2.4.10pre10aa1: 00_pagetables-alloc-none-1 Only in 2.4.10pre10aa1: 00_peekurgdata-1 Only in 2.4.10pre10aa1: 00_sched-rt-fix-1 Only in 2.4.10pre10aa1: 00_show_regs-1 Only in 2.4.10pre10aa1: 00_signal-wakeup-1 Only in 2.4.10pre10aa1: 00_slab-microoptimize-1 Only in 2.4.10pre10aa1: 00_smp_call_function-2 Only in 2.4.10pre10aa1: 00_swapfiles-1 Only in 2.4.10pre10aa1: 00_sync-page-1 Only in 2.4.10pre10aa1: 00_timer_t-2 Only in 2.4.10pre10aa1: 00_vmalloc-flushes-1 Only in 2.4.10pre10aa1: 00_waitqueue-2 Only in 2.4.10pre10aa1: 10_prefetch-8 Only in 2.4.10pre10aa1: 10_rawio-f_iobuf-1 Only in 2.4.10pre10aa1: 10_read_ahead-2 Only in 2.4.10pre10aa1: 10_softirq-wait-network-fixes-2 Only in 2.4.10pre10aa1: 11_prefetch-5_ia64-1 Only in 2.4.10pre10aa1: 40_blkdev-pagecache-17 Only in 2.4.10pre10aa1: 41_blkdev-pagecache-5_drop_get_bh_async-1 Only in 2.4.10pre10aa1: 70_mmap-rb-9 Only in 2.4.10pre10aa1: 80_vm-aa-1 Merged into 2.4.10pre11. Only in 2.4.10pre10aa1: 00_max-threads-1 Only in 2.4.10pre11aa1: 00_max-threads-backout-1 Max thread change was merged but I just partially backed out, Jari Ruusu reported failed fork because of such change, backing it out fixed things for him. The old 2.4 "half of ram" logic was excessive though, so I did 1/4 instead of 1/16 of the ram now, that should be ok. Only in 2.4.10pre11aa1: 00_vm-aa-2 description of the patch: - fixed a race condition in rw_swap_page path: if we need to wait synchronously on the page we must hold a reference on the page or it could be freed by the VM under us after it's been unlocked at I/O completion time (see the page_io.c changes) - don't hide anything (see the new parameter "this_max_scan" to shrink_cache) - don't skip work on the ptes but just don't stop until we unmapped the "interesting" pages from the right classzone - set the task to runnable to avoid lockups with copy_users run within a wait_event interface with the task not runnable - make sure not to pollute the active cache with referenced swapcache - allow deep allocations in case we succeed the balancing but we haven't queued pages in the local freelist and kswapd+GFP_ATOMIC put the number of free pages in the classzone below the atomic watermark for legal reasons (for the record: the atomic watermark is min/2) - block kswapd during oom for 5 sec to allow more graceful task killing - don't fail memory_balancing unless we also failed in making pages freeable (if we made pages freeable and we couldn't find them it means kswapd freed them for us) - refill the inactive list regularly to not left things hanging forever in the active list - don't max_scan all over the active list, just stay at MAX_PRIORITY to better preserve the working set during heavy vm load - make deactivate_page to unset the referenced bit so the page can really be freed, and the other way around for activate_page so it stays there for longer time - initialize need_balance to zero at boot - skip over physically referenced pages queued in the lru lists in swap_out (wait the physical aging to finish before kicking in freeing those pages) results of the patch: 1) better stability thanks to the race fix ;) 2) tasks should not be killed by mistake unless truly oom (oom handling seems sane too) 3) swapout behaviour should be much better 4) the regular refill of the inactive list should provide better performance in the I/O loads. Infact even dbench runs even faster (but it wasn't really developed to improve dbench). Only in 2.4.10pre10aa1: 00_increase-logbuffer-1 Only in 2.4.10pre11aa1: 00_increase-logbuffer-2 Rediffed due trivial reject. Only in 2.4.10pre11aa1: 00_builtin_expect-1 Defines compatibility __builtin_expect() for old compilers. Only in 2.4.10pre10aa1: 00_copy-user-lat-3 Only in 2.4.10pre11aa1: 00_copy-user-lat-4 Rediffed and changed to use ____builtin_expect while checking for need_resched. Only in 2.4.10pre11aa1: 00_mmap-enomem-1 Drop an unnecessary error = -ENOMEM setting from mmap. Only in 2.4.10pre10aa1: 00_module-gfp-3 Only in 2.4.10pre11aa1: 00_module-gfp-4 Rediffed due rejects. Only in 2.4.10pre10aa1: 00_numa-sched-7 Only in 2.4.10pre11aa1: 00_numa-sched-8 Rediffed due rejects. Only in 2.4.10pre10aa1: 00_rcu-2 It generated rejects so temporarily removed instead of spending time fixing up the rejects from the tree while waiting the rewrite that uses a per-cpu scheduling sequence number in schedule(). Only in 2.4.10pre10aa1: 00_rwsem-18 Only in 2.4.10pre11aa1: 00_rwsem-19 Allow down_read recursion to fix page fault deadlock with copy_user (this will possibly be reversed if nobody will do copy_user inside a read semaphore critical section). All architectures are corrected by this change. Only in 2.4.10pre11aa1: 00_silent-stack-overflow-10 Only in 2.4.10pre10aa1: 00_silent-stack-overflow-9 Rediffed due rejects, this still fix a locking SMP race in expand_stack and should be merged into mainline ASAP (if the stack-gap feature is too ugly to live in mainline [despite providing higher degree of robusteness to userspace] I can split off the strict locking fix). Only in 2.4.10pre10aa1: 60_atomic-alloc-4 Only in 2.4.10pre11aa1: 60_atomic-alloc-5 Rediffed due rejects.