---

Linux kernel 2.2.13aa6 released (bugfix release II)

2.2.13aa6 (bugfix release II)

Date: Fri, 17 Dec 1999 16:34:21 +0100 (CET)
From: Andrea Arcangeli andrea@suse.de
To: linux-kernel@vger.rutgers.edu

I released a 2.2.13aa6 mainly to include my latest fs corruption fixes.

The main features of 2.2.13aa6 are:

o        Support for 4Gigabyte of RAM (me and Gerhard.Wichert)
o        Improved VM for high end machines with enough ram and doing
        heavy I/O under high memory pressure (me)
o        RAW-IO (also on bigmem) (Stephen C. Tweedie)

o        updated with all showstopper/necessary bugfixes discovered into
        the 2.2.x kernels over the time.

NOTE (2.2.14pre): if you don't need the 4g support and raw-io and your
machine has a workstation load (so you don't do heavy I/O) you should
ignore 2.2.13aa6 and I suggest to use 2.2.14pre14 plus my
block_dev-fs-corruption patch.

NOTE (raid): if you want to use the latest raid patches
(raid0145-19990824-2.2.11) over 2.2.13aa6 simply apply the raid patch over
2.2.13aa6 and then apply this incremental patch on the resulting kernel:

ftp://ftp.*.kernel.org/pub/linux/kernel/people/andrea/patches/v2.2/2.2.14pre11/set_blocksize-1-raid0145-19990824-2.2.11.gz

Then raid will work just fine.

Side note: I am not including the new raid code in 2.2.x because at least
raid0 is just rock solid in the stock 2.2.13 kernel and I don't want to
force people to convert the on-disk format of their raid device in order
to run 2.2.13aa6. People who wants to use raid can go with my incremental
raid fix.

Incremental description of 2.2.13aa6:

------ 2.2.13aa6 --------
diff -u --exclude version.gz 2.2.13aa5 2.2.13aa6
Only in 2.2.13aa6: block_dev-fs-corruption-1.gz

block_dev-fs-corruption-1.gz     ->      fixes fs corruption in the
                                 blockdevice layer (me)

------ 2.2.13aa5 --------
diff -u --exclude version.gz 2.2.13aa4 2.2.13aa5
Only in 2.2.13aa4: buffer-races-2.2.10-A.gz
Only in 2.2.13aa5: buffer-races-2.2.13-3.gz
Only in 2.2.13aa5: ext2-1.gz


buffer-races-2.2.13-3.gz         ->      includes the
                                 buffer-races-2.2.10-A.gz
                                 features and it also fixes fs
                                 corruption generated by hdparm or
                                 flushb on an active filesystem and
                                 a minor problem in sync_dev (me)

ext2-1.gz                        ->      fixes bugs that may lead to
                                 ext2 fs corruption or
                                 fsync errors (me)

------ 2.2.13aa5 --------
diff -u --exclude version.gz 2.2.13aa3 2.2.13aa4
Only in 2.2.13aa4: inode-recycle-fixes.gz
Only in 2.2.13aa4: java-proc.gz
Only in 2.2.13aa4: signal-race.gz
Only in 2.2.13aa4: syncookies.gz

inode-recycle-fixes.gz           ->      fixes an inode leakage (me)

syncookies.gz                    ->      fixed syncooky bug (without the
                                 fix at the first synflood
                                 the machine will forbid
                                 connections to all hosts, must
                                 check only the SYN/ACK/FIN
                                 bit and not the data offset
                                 and window of the incoming
                                 packet ;). (Alan Cox)

signal-race.gz                   ->      fixes a race in the send sig path
                                 (David Miller)

java-proc.gz                     ->      revertd the semantic change that
                                 make difference between
                                 /proc/00000$$ and /proc/$$, this
                                 allows backwards compatibilty of
                                 a misfeature and it _won't_ hurt
                                 security. There's no downside
                                 in reverting the 2.2.13 semantic
                                 change.

------ 2.2.13aa3 --------
diff -u --exclude version.gz 2.2.13aa2 2.2.13aa3
Only in 2.2.13aa3: dcache-hashfn.gz
Only in 2.2.13aa3: fdset-fix.gz
Only in 2.2.13aa2: z-bigmem-2.2.13aa2-6.gz
Only in 2.2.13aa3: z-bigmem-2.2.13aa3-7.gz

z-bigmem-2.2.13aa3-7.gz          -> fixed a obvious silly bigmem
                            bug that will lead
                            to processes killed randomly.
                            (all the credit goes to Leonard N.
                            Zubkoff)
fdset-fix.gz                     -> fixed a fdset bug that may lead to
                            memory corruption and Oopses
                            (credits goes to
                            Savochkin Andrey Vladimirovich,
                            I only backported the 2.3.x patch
                            to a four liner against 2.3.13)
dcache-hashfn.gz                 -> use only the dentry noise for
                            randomizing the dcache hashfn
                            (all the credit goes to David S.
                            Miller)

------ 2.2.13aa2 --------

SMP-scheduler-2.2.11-E.gz        -> rewrote of reschedule_idle. (me)
buffer-hash.gz                   -> fixes lowmem box hash size. (me)
buffer-races-2.2.10-A.gz         -> fixes of race condition that may lead
                            to bad things in invalidate_buffers()
                            and set_blocksize(). (me)
clear-backlog-2.gz               -> fixes for a SMP race condition in
                            the main network backlog handling. (me)
dcache-hash.gz                   -> dcache hash dynamic (with my
                            own heuristc). (started from 2.2.13ac1 
but then reimplemented by me)
free_page.gz                     -> cleanup of the __free_pages
                            interface. (me)
hashed-buffers-2.2.10.gz         -> minor fix to increase the debugging
                            information in the right place. (me)
inode-leak-2.2.10-A.gz           -> make sure to not leak memory
                            by allocating lots of sockets (DoS),
                            and let know the admin to enlarge
                            the max-inodes if the admin really 
                            wants more unfreeable memory in the
                            icache. (me)
kupdate-sigstop-2.2.11-1.gz      -> allow kupdate to be stopped via
                            SIGSTOP (currently it must be stopped
                            by setting interval to zero via
                            sysctl). (me)
no-swapout-2.2.10-B.gz           -> avoid swapin/swapouts during heavy
                            I/O (strictly necessary for decent
                            performances on very I/O and MM loaded
                            servers). (me)
oom-2.2.12-I.gz                  -> assorted OOM fixes (deadlocks in
                            pagein, Alpha SIGBUS fix, avoid
                            sigkilling iopl() application send
                            a sigterm instead, avoid init
                            to be killed), it's the same
                            patch merged by Alan into 2.2.14pre2. (me)
pagecache-hash.gz                -> pagecache hash dynamic (I think
                            it's DaveM's work, literally I took it
                            from 2.2.13ac1). I agree with the
                            heuristc used. It allocates
                            num_physpages buckets for the pagecache
                            and this basically means all the
                            buckets will be filled supposing a
                            perfect hash distribution with all the memory
                            allocated in the cache. (all credits
                            to David S. Miller)
probe-irq-2.3.14-pre2-1.gz       -> avoid a pending irq to be mistaken
                            for a spurious irq. (me)
shrink_all_cache-2.2.10-A.gz     -> make sure that big memory boxes will
                            shrink the cache well enough. (me)
trashing-mem-2.2.10-A.gz         -> heuristic to penalize memory hogs,
                            the system will remains responsive
                            also during heavy swapout. (me)
version.gz                       -> set the EXTRAVERSION to aa2 ;)
wait-event-smp-races.gz          -> Put the two mb() after setting the
                            task state as blocking and before
                            checking if the event is just happend
                            (SMP race fix). (me)
wait4-smp-race.gz                -> _Critical_ SMP race fix.
                            Without this one liner each time you
                            run `ls` from bash, the bash is going
                            to deadlock in wait4 if you are unlucky
                            enough. The race is very small
                            but there are machine under heavy
                            fork load load that reproduced this
                            race regularly after some day of load.
                            The SMP race can happen only
                            with an SMP kernel on a SMP hardware. (me)
wakeup_bdflush-2.2.10-A.gz       -> avoid deadlocking in wakeup_bdflush
                            (the run_task_queue() can sleep for
                            example while running the loop
                            request function). (me)
z-bigmem-2.2.13aa2-6.gz          -> 4GB support on x86. (me and
                            Gerhard Wichert)
z-bigmem-nodebug.gz              -> turn the bigmem code into production
                            mode.
z-bigmem-rawio-2.2.13aa2-1.gz    -> rawio working even with bigmem memory
                            (I started with rawio from 2.2.13ac1
                            and SCT's 2.3.x rawio bounce buffers,
                            all the credits go to Stephen C.
                            Tweedie)
zmagic-all-blocksize.gz          -> allow zmagic binaries to run
                            also on 4k filesystems (it's the same
                            that gone into 2.2.14pre2). (me)
----------------------------------------------------------------------

To go in sync with 2.2.13aa6 you can:

 mkdir 2.2.13aa6
 cd 2.2.13aa6
 wget --retr-symlinks -A*.gz ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.2/2.2.13aa6/*
 cd ..

and now you'll have all the interesting patches in the directory
2.2.13aa6.

At this point rename the 2.2.13 sources to 2.2.13aa6:

 mv linux-2.2.13 linux-2.2.13aa6
 cd linux-2.2.13aa6

and apply all the 2.2.13aa6 patches that you previously downloaded from
the ftp site:

 apply-patches.sh ../2.2.13aa6

At this point your tree will be in sync with 2.2.13aa6. Just configure
recompile and boot the new kernel.


You can find the `apply-patches.sh` bash script I written to easily apply
my kernel patches here:

 ftp://ftp.*.kernel.org/pub/linux/kernel/people/andrea/tools/apply-patches/apply-patches.sh.gz

There is also a README on how to use it:

 ftp://ftp.*.kernel.org/pub/linux/kernel/people/andrea/tools/apply-patches/README.gz

The 2.2.13aa6 kernel is placed here:

 ftp://ftp.*.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.2/2.2.13aa6/

Have fun! ;)

Andrea

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends, & analysis