2.4.10pre11aa1

Andrea Arcangeli (andrea@suse.de)
Tue, 18 Sep 2001 23:02:42 +0200


The great news of this release is that thanks to Linus more than half of
-aa (the most interesting part of it) is been merged stright into
2.4.10pre11 mainline so you won't need to apply -aa any longer to get
the
vm-rewrite/kiobuf-preallication/O_DIRECT/vma-merging/blkdev-pagecache
features :):).

Thanks also to Marcelo for promptly finding a problem in the vm rewrite,
to Al Viro for having spotted promptly a silly bug in the
blkdev-pagecache patch (see details on l-k) and for all the people
who provided feedback over the last day.

the interesting part of this 11aa1 update are a copuple of vm fixes to
the vm rewrite and the read lock in the rwsemaphores that can now be
used in a recursive manner without risking deadlocks (it fixes a
deadlock condition in the core dumping and /proc stats).

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.

Andrea
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/