[LWN Logo]
[LWN.net]
From:	 Andrea Arcangeli <andrea@suse.de>
To:	 linux-kernel@vger.kernel.org
Subject: 2.4.18pre2aa1
Date:	 Tue, 8 Jan 2002 15:55:53 +0100

This attempts to fix all the fs corruption troubles with get_blocks
failures (like -ENOSPC). Thanks to Andrew for the big help in closing
those. Please review.

I also couldn't resist to add the dyn_sched because I'm dealing with
servers that needs to run 2k tasks (with only a few of them running at
the same time loading cpu), so there the reclaculate loop was evil and
the change is simple enough to be kind of obviously correct (btw: I also
seen a similar patch posted to l-k a few years back from somebody at
SGI), the dyn_sched patch from Davide basically fixes this making the N
only the number of running tasks and the improvement should become
visible (possibly also on machines with houndred of tasks with only a
few running). Davide's patch isn't in its original form, I changed it
quite a bit to fix various bits and I think it's safe enough now, but
please compare rc2aa2 with this new one and tell me if you can notice
any loss of responsiveness (note: I wouldn't be surprised if it would be
more responsive, the dyn_prio doesn't go away at the end of the first
timeslice, so it will detect better the interactive tasks than the
previous algorithm). In my testing on the laptop it seems to work fine,
I cannot notice anything wrong with the scheduler. The troubles happened
in 2.5 are irrelevant, I should have fixed all the glitches before
including it in -aa (thanks to Linus, Davide and the others on l-k for
spotting them on the 2.5 side).  But still if you find any problem with
the scheduler backing out 30_dyn-sched-1 should cure it completly (and
of course please let me know in such case). thanks,

URL:

	ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.18pre2aa1.bz2
	ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.18pre2aa1/

Only in 2.4.17rc2aa2: 00_find_or_create_page-1

	Merged in mainline.

Only in 2.4.17rc2aa2: 00_get_block-leftovers-1

	Obsoleted by more extensive patches in 18pre1aa1.

Only in 2.4.18pre1aa1: 00_ia64-dma-1

	Some block-highmem bit for ia64 from Andreas Schwab. However
	I'm not sure if ia64 compiles yet, it is possible the ia64
	patch is needed as well (it's not likely to apply without at least some
	trivial reject though).

Only in 2.4.18pre1aa1: 00_msync-ret-1

	Fix MS_ASYNC and try to report I/O errors as much as possible
	in the msync path. Fix from Andrew Morton.

Only in 2.4.18pre1aa1: 00_netconsole-3c59x-1

	Enable netconsole in 3c59x driver, from Andi Kleen.

Only in 2.4.18pre1aa1: 00_nfs-2.4.17-cto-1
Only in 2.4.18pre1aa1: 00_nfs-2.4.17-pathconf-1
Only in 2.4.18pre1aa1: 00_nfs-bkl-1
Only in 2.4.18pre1aa1: 00_nfs-rpc-ping-1
Only in 2.4.18pre1aa1: 00_nfs-seekdir-1

	NFS updates from Trond Myklebust. BTW, the svc tcp patches are broken,
	they oopsed on me with a simple mount of nfs via udp, so I left them
	out. this is the oops for the record:

Jan  7 20:24:43 athlon kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000028
Jan  7 20:24:43 athlon kernel:  printing eip:
Jan  7 20:24:43 athlon kernel: c01290b0
Jan  7 20:24:43 athlon kernel: *pde = 00000000
Jan  7 20:24:43 athlon kernel: Oops: 0000
Jan  7 20:24:43 athlon kernel: CPU:    0
Jan  7 20:24:43 athlon kernel: EIP:    0010:[kmem_cache_alloc+192/240]    Not tainted
Jan  7 20:24:43 athlon kernel: EFLAGS: 00010246
Jan  7 20:24:43 athlon kernel: eax: 00000000   ebx: c22bc200   ecx: c22bc39c   edx: c0340b88
Jan  7 20:24:43 athlon kernel: esi: c1fe6a40   edi: 00000000   ebp: 000001f0   esp: c2583f38
Jan  7 20:24:43 athlon kernel: ds: 0018   es: 0018   ss: 0018
Jan  7 20:24:43 athlon kernel: Process nfsd (pid: 820, stackpage=c2583000)
Jan  7 20:24:43 athlon kernel: Stack: 00000000 c2592000 c02f8000 7fffffff c22bc39c c0340b88 c2583f80 c0111715 
Jan  7 20:24:43 athlon kernel:        c22bc200 c1fe6a40 c0340b88 c0340b88 c0276ef7 00000000 000001f0 c22bc200 
Jan  7 20:24:43 athlon kernel:        c1fe1dc0 c0340b88 c0278b3a c1fe6a40 00000000 c2582000 00000000 00000000 
Jan  7 20:24:43 athlon kernel: Call Trace: [schedule_timeout+149/160] [svc_resbuf_alloc+23/112] [svc_recv+330/912] [nfsd+226/768] [kernel_thread+38/48
Jan  7 20:24:43 athlon kernel:    [nfsd+0/768] 
Jan  7 20:24:43 athlon kernel: 
Jan  7 20:24:43 athlon kernel: Code: f6 47 28 01 0f 84 5b ff ff ff 68 c1 04 00 00 68 80 81 28 c0 

Only in 2.4.18pre1aa1: 00_o_direct-leftovers-2

	Make sure not to left suprious blocks allocated with O_DIRECT.
	Fix is a little dirty but should be ok. Please review. Thanks.

Only in 2.4.18pre1aa1: 00_page-cache-release-1

	Move the lru handling into __free_pages internals to
	catch all pagecache users (obviously safe and faster given we
	had a branch for the BUG() anyways there).  From Benjamin LaHaise.

Only in 2.4.17rc2aa2: 00_ramdisk-buffercache-1
Only in 2.4.18pre1aa1: 00_ramdisk-buffercache-2

	Further ramdisk fixes on top of the previous patch.
	From Andrew Morton.

Only in 2.4.18pre1aa1: 00_reduce-module-races-1

	Use synchronize_kernel from the rcu_poll functionality to reduce the
	possibility of module unload race conditions (possibly definitely
	fixing at least some of them). From Andi Kleen.

Only in 2.4.17rc2aa2: 00_silent-stack-overflow-13
Only in 2.4.18pre1aa1: 00_silent-stack-overflow-14

	Rediffed due rejects.

Only in 2.4.18pre1aa1: 00_truncate-garbage-1

	FS corruption fixes while dealing with get_block failures.
	Patch from Andrew Morton, but note this has further fixes,
	the BH_New handling was still wrong in the latest patch in my
	inbox.

Only in 2.4.17rc2aa2: 10_parent-timeslice-8
Only in 2.4.18pre1aa1: 10_parent-timeslice-9

	Rediffed due rejects.

Only in 2.4.17rc2aa2: 10_vm-21
Only in 2.4.18pre1aa1: 10_vm-22

	Pass two times over all the pte before failing swap_out.

Only in 2.4.17rc2aa2: 20_highmem-debug-7
Only in 2.4.18pre1aa1: 20_highmem-debug-8

	Rediffed due rejects.

Only in 2.4.18pre1aa1: 30_dyn-sched-1

	Merged a fixed up version of the dynamic scheduler patch from Davide
	Libenzi. In particular sys_sched_yield looked wrong (shouldn't throw away
	the timeslice but only roll the task over) and idle tasks handling is
	now corrected too (also make sure not to do suprious reschedule of the idle
	tasks, set need_resched on idle tasks only via reschedule_idle). Also
	increased a bit the nice levels and give the dyn_sched at max only the
	double of power of a legacy timeslice.

	If you've any problem with this release, please try to backout the
	30_dyn-sched-1 patch as first thing. The main reason I merged it
	is that I'm dealing with boxes with thousands of tasks, but only a few
	of them running at the same time, and avoiding browse of the huge
	linked list should make an visible difference for those systems.

Only in 2.4.17rc2aa2: 50_uml-patch-2.4.16-2.bz2
Only in 2.4.18pre1aa1: 50_uml-patch-2.4.17-4.bz2

	Latest update from Jeff at user-mode-linux.sourceforge.net.

Only in 2.4.17rc2aa2: 60_atomic-alloc-7
Only in 2.4.18pre1aa1: 60_atomic-alloc-8

	Rediffed.

Only in 2.4.17rc2aa2: 60_tux-2.4.16-final-E2.bz2
Only in 2.4.18pre1aa1: 60_tux-2.4.17-final-A0.bz2

	Latest update from Ingo at www.redhat.com/~mingo/ .

Only in 2.4.17rc2aa2: 60_tux-vfs-3
Only in 2.4.18pre1aa1: 60_tux-vfs-4

	Rediffed.

Only in 2.4.17rc2aa2: 70_loop-deadlock-2

	Merged in mainline.

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/