2003-01-31 01:30:48

by Andrea Arcangeli

[permalink] [raw]
Subject: 2.4.21pre4aa1

URL:

http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.21pre4aa1.gz
http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.21pre4aa1/

Diff between 2.4.21pre3aa1 and 2.4.21pre4aa1:

Only in 2.4.21pre3aa1: 00_bdflush-docs-1
Only in 2.4.21pre3aa1: 00_o_direct-align-1
Only in 2.4.21pre3aa1: 00_sd-cleanup-3
Only in 2.4.21pre3aa1: 00_slabinfo-shared-address-space-1
Only in 2.4.21pre3aa1: 30_alpha-wildfire-numa-generic-1

Merged in mainline.

Only in 2.4.21pre3aa1: 00_extraversion-16
Only in 2.4.21pre4aa1: 00_extraversion-17
Only in 2.4.21pre3aa1: 00_rwsem-fair-34
Only in 2.4.21pre3aa1: 00_rwsem-fair-34-recursive-8
Only in 2.4.21pre4aa1: 00_rwsem-fair-35
Only in 2.4.21pre4aa1: 00_rwsem-fair-35-recursive-8
Only in 2.4.21pre3aa1: 00_sched-O1-aa-2.4.19rc3-8.gz
Only in 2.4.21pre4aa1: 00_sched-O1-aa-2.4.19rc3-9.gz
Only in 2.4.21pre3aa1: 10_rawio-vary-io-17
Only in 2.4.21pre4aa1: 10_rawio-vary-io-18
Only in 2.4.21pre3aa1: 20_numa-mm-5
Only in 2.4.21pre4aa1: 20_numa-mm-6
Only in 2.4.21pre3aa1: 82_x86_64-suse-6
Only in 2.4.21pre4aa1: 82_x86_64-suse-7
Only in 2.4.21pre3aa1: 83_x86_64-x86-1
Only in 2.4.21pre3aa1: 84_x86-64-arch-1
Only in 2.4.21pre4aa1: 84_x86-64-arch-2
Only in 2.4.21pre3aa1: 85_x86-64-includes-1
Only in 2.4.21pre4aa1: 85_x86-64-includes-2
Only in 2.4.21pre3aa1: 90_proc-mapped-base-4
Only in 2.4.21pre4aa1: 90_proc-mapped-base-5
Only in 2.4.21pre3aa1: 96_inode_read_write-atomic-5
Only in 2.4.21pre4aa1: 96_inode_read_write-atomic-6
Only in 2.4.21pre3aa1: 9900_aio-14.gz
Only in 2.4.21pre4aa1: 9900_aio-15.gz

Rediffed.

Only in 2.4.21pre4aa1: 00_generic_file_write_nolock-1
Only in 2.4.21pre3aa1: 00_o_direct-read-overflow-write-locking-xfs-2
Only in 2.4.21pre3aa1: 60_pagecache-atomic-7
Only in 2.4.21pre4aa1: 60_pagecache-atomic-8
Only in 2.4.21pre4aa1: 70_xfs-1.2-1
Only in 2.4.21pre3aa1: 70_xfs-cvs-020905-1
Only in 2.4.21pre3aa1: 71_xfs-aa-1
Only in 2.4.21pre4aa1: 71_xfs-aa-2
Only in 2.4.21pre3aa1: 71_xfs-sched-1
Only in 2.4.21pre3aa1: 71_xfs-zalloc-fix-1

Merged xfs 1.2, patches from Christoph Hellwig.

Only in 2.4.21pre3aa1: 00_getcwd-err-1
Only in 2.4.21pre4aa1: 00_getcwd-err-2

Part of it merged in mainline.

Only in 2.4.21pre4aa1: 00_tcp-retrans-collapse-1

Fix from David Miller and Alexey Kuznetsov for hw checksum
missing memcpy of payload during retrans collapse.

Only in 2.4.21pre3aa1: 00_vma-file-merge-1
Only in 2.4.21pre4aa1: 00_vma-file-merge-2

Two minor micro-optimizations (no functional noticeable difference).

Only in 2.4.21pre4aa1: 30_p3-p4-optimize-1

Use prefetch for p4 too, and use the pentium4 and pentium4 compiler
switchs so it avoids incl/decl (from Margit Schubert-While)

Only in 2.4.21pre3aa1: 9985_blk-atomic-aa5
Only in 2.4.21pre4aa1: 9985_blk-atomic-aa6

Fix raid.

Only in 2.4.21pre3aa1: 9995_frlock-gettimeofday-1
Only in 2.4.21pre4aa1: 9995_frlock-gettimeofday-2

Fix 486 SMP and the notsc mode (however nobody should need
notsc these days on x86, numaq uses cyclone autodetected at boot now)

Only in 2.4.21pre4aa1: 9996_kiobuf-slab-1

Keep the kiobuf + bhs cache in the slab rather than in the file
structure, so it scales also while sharing the same file from two
different filedescriptors at the same time (like with threads or
after forks). From Jun Nakajima.

Andrea


2003-01-31 10:47:23

by Christoph Hellwig

[permalink] [raw]
Subject: Re: 2.4.21pre4aa1

On Fri, Jan 31, 2003 at 02:40:20AM +0100, Andrea Arcangeli wrote:
> Only in 2.4.21pre3aa1: 00_getcwd-err-1
> Only in 2.4.21pre4aa1: 00_getcwd-err-2
>
> Part of it merged in mainline.

A different, cleaner version has been merged in mainline. 00_getcwd-err-2
just adds unreachable code.

> Only in 2.4.21pre4aa1: 9996_kiobuf-slab-1
>
> Keep the kiobuf + bhs cache in the slab rather than in the file
> structure, so it scales also while sharing the same file from two
> different filedescriptors at the same time (like with threads or
> after forks). From Jun Nakajima.

The patch is ugly as hell. I'll dig up the patch I did with similar
functionality but a much nicer style and a sysctl-controllable cut-off
point for keeping the bhs around in the constructed kiobuf objects.

>

2003-01-31 16:01:34

by Andrea Arcangeli

[permalink] [raw]
Subject: Re: 2.4.21pre4aa1

On Fri, Jan 31, 2003 at 10:56:43AM +0000, Christoph Hellwig wrote:
> On Fri, Jan 31, 2003 at 02:40:20AM +0100, Andrea Arcangeli wrote:
> > Only in 2.4.21pre3aa1: 00_getcwd-err-1
> > Only in 2.4.21pre4aa1: 00_getcwd-err-2
> >
> > Part of it merged in mainline.
>
> A different, cleaner version has been merged in mainline. 00_getcwd-err-2
> just adds unreachable code.

Ok agreed, it's a noop, I'll drop it. It won't hurt in the meantime.

>
> > Only in 2.4.21pre4aa1: 9996_kiobuf-slab-1
> >
> > Keep the kiobuf + bhs cache in the slab rather than in the file
> > structure, so it scales also while sharing the same file from two
> > different filedescriptors at the same time (like with threads or
> > after forks). From Jun Nakajima.
>
> The patch is ugly as hell. I'll dig up the patch I did with similar

I don't think it's so ugly, infact it's very clever compared to the
previous code, the big hit for the kiobuf is the bh allocation and this
solves it moving the bh into the slab too.

> functionality but a much nicer style and a sysctl-controllable cut-off

sysctl-controllable? I don't like it. This one should perform well
always.

> point for keeping the bhs around in the constructed kiobuf objects.

Feel free to provide a replacement but I don't see how you can make it
that much better as you claim.

The only unclean bit is the initialized field probably, but that's not a
significant cost and it's probably the simpler way to deal with the
ctor failures.

Andrea

2003-02-05 23:06:52

by Andrea Arcangeli

[permalink] [raw]
Subject: Re: 2.4.21pre4aa1

On Wed, Feb 05, 2003 at 03:12:03PM -0800, Samuel Flory wrote:
> Is the dac960 compile still broken? Or did it break again?
>
> make[3]: Entering directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
> gcc -D__KERNEL__ -I/stuff/src/linux-2.4.21-pre4-aa1/include -Wall
> -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
> -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686
> -nostdinc -iwithprefix include -DKBUILD_BASENAME=DAC960 -DEXPORT_SYMTAB
> -c DAC960.c
> DAC960.c: In function `DAC960_ProcessCompletedBuffer':
> DAC960.c:3029: warning: passing arg 1 of `blk_finished_io' makes pointer
> from integer without a cast
> DAC960.c:3029: too few arguments to function `blk_finished_io'
> make[3]: *** [DAC960.o] Error 1
> make[3]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
> make[2]: *** [first_rule] Error 2
> make[2]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
> make[1]: *** [_subdir_block] Error 2
> make[1]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers'
> make: *** [_dir_drivers] Error 2

It was supposed to be fixed I need to re-check.. (I usually don't
compile it so I didn't notice sorry)

Andrea

2003-02-05 23:03:46

by Samuel Flory

[permalink] [raw]
Subject: Re: 2.4.21pre4aa1

Is the dac960 compile still broken? Or did it break again?

make[3]: Entering directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
gcc -D__KERNEL__ -I/stuff/src/linux-2.4.21-pre4-aa1/include -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
-fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686
-nostdinc -iwithprefix include -DKBUILD_BASENAME=DAC960 -DEXPORT_SYMTAB
-c DAC960.c
DAC960.c: In function `DAC960_ProcessCompletedBuffer':
DAC960.c:3029: warning: passing arg 1 of `blk_finished_io' makes pointer
from integer without a cast
DAC960.c:3029: too few arguments to function `blk_finished_io'
make[3]: *** [DAC960.o] Error 1
make[3]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
make[2]: *** [first_rule] Error 2
make[2]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
make[1]: *** [_subdir_block] Error 2
make[1]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers'
make: *** [_dir_drivers] Error 2

--
There is no such thing as obsolete hardware.
Merely hardware that other people don't want.
(The Second Rule of Hardware Acquisition)
Sam Flory <[email protected]>



2003-02-05 23:14:14

by Samuel Flory

[permalink] [raw]
Subject: Re: 2.4.21pre4aa1

Andrea Arcangeli wrote:

>On Wed, Feb 05, 2003 at 03:12:03PM -0800, Samuel Flory wrote:
>
>
>>Is the dac960 compile still broken? Or did it break again?
>>
>>make[3]: Entering directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
>>gcc -D__KERNEL__ -I/stuff/src/linux-2.4.21-pre4-aa1/include -Wall
>>-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
>>-fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686
>>-nostdinc -iwithprefix include -DKBUILD_BASENAME=DAC960 -DEXPORT_SYMTAB
>>-c DAC960.c
>>DAC960.c: In function `DAC960_ProcessCompletedBuffer':
>>DAC960.c:3029: warning: passing arg 1 of `blk_finished_io' makes pointer
>>from integer without a cast
>>DAC960.c:3029: too few arguments to function `blk_finished_io'
>>make[3]: *** [DAC960.o] Error 1
>>make[3]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
>>make[2]: *** [first_rule] Error 2
>>make[2]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
>>make[1]: *** [_subdir_block] Error 2
>>make[1]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers'
>>make: *** [_dir_drivers] Error 2
>>
>>
>
>It was supposed to be fixed I need to re-check.. (I usually don't
>compile it so I didn't notice sorry)
>
>


Just wondering it looked familar. I think I've got the patch someone
posted a while back.

--
There is no such thing as obsolete hardware.
Merely hardware that other people don't want.
(The Second Rule of Hardware Acquisition)
Sam Flory <[email protected]>



2003-02-05 23:35:41

by J.A. Magallon

[permalink] [raw]
Subject: Re: 2.4.21pre4aa1


On 2003.02.06 Samuel Flory wrote:
> Andrea Arcangeli wrote:
>
> >On Wed, Feb 05, 2003 at 03:12:03PM -0800, Samuel Flory wrote:
> >
> >
> >>Is the dac960 compile still broken? Or did it break again?
> >>
> >>make[3]: Entering directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
> >>gcc -D__KERNEL__ -I/stuff/src/linux-2.4.21-pre4-aa1/include -Wall
> >>-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
> >>-fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686
> >>-nostdinc -iwithprefix include -DKBUILD_BASENAME=DAC960 -DEXPORT_SYMTAB
> >>-c DAC960.c
> >>DAC960.c: In function `DAC960_ProcessCompletedBuffer':
> >>DAC960.c:3029: warning: passing arg 1 of `blk_finished_io' makes pointer
> >>from integer without a cast
> >>DAC960.c:3029: too few arguments to function `blk_finished_io'
> >>make[3]: *** [DAC960.o] Error 1
> >>make[3]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
> >>make[2]: *** [first_rule] Error 2
> >>make[2]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers/block'
> >>make[1]: *** [_subdir_block] Error 2
> >>make[1]: Leaving directory `/stuff/src/linux-2.4.21-pre4-aa1/drivers'
> >>make: *** [_dir_drivers] Error 2
> >>
> >>
> >
> >It was supposed to be fixed I need to re-check.. (I usually don't
> >compile it so I didn't notice sorry)
> >
> >
>

I still have this in -jam, grabbed from the list:

diff -ur linux-2.4.20_original/drivers/block/DAC960.c linux-2.4.20aa1/drivers/block/DAC960.c
--- linux-2.4.20_original/drivers/block/DAC960.c Wed Dec 4 16:52:50 2002
+++ linux-2.4.20aa1/drivers/block/DAC960.c Wed Dec 4 16:56:15 2002
@@ -19,8 +19,8 @@
*/


-#define DAC960_DriverVersion "2.4.11"
-#define DAC960_DriverDate "11 October 2001"
+#define DAC960_DriverVersion "2.4.20"
+#define DAC960_DriverDate "2003"


#include <linux/version.h>
@@ -2975,8 +2975,9 @@
Command->SegmentCount = Request->nr_segments;
Command->BufferHeader = Request->bh;
Command->RequestBuffer = Request->buffer;
+ Command->Request = Request;
blkdev_dequeue_request(Request);
- blkdev_release_request(Request);
+ /* blkdev_release_request(Request); */
DAC960_QueueReadWriteCommand(Command);
return true;
}
@@ -3023,11 +3024,12 @@
individual Buffer.
*/

-static inline void DAC960_ProcessCompletedBuffer(BufferHeader_T *BufferHeader,
+static inline void DAC960_ProcessCompletedBuffer(IO_Request_T *Req, BufferHeader_T *BufferHeader,
boolean SuccessfulIO)
{
- blk_finished_io(BufferHeader->b_size >> 9);
+ blk_finished_io(Req, BufferHeader->b_size >> 9);
BufferHeader->b_end_io(BufferHeader, SuccessfulIO);
+
}


@@ -3116,9 +3118,10 @@
{
BufferHeader_T *NextBufferHeader = BufferHeader->b_reqnext;
BufferHeader->b_reqnext = NULL;
- DAC960_ProcessCompletedBuffer(BufferHeader, true);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, true);
BufferHeader = NextBufferHeader;
}
+ blkdev_release_request(Command->Request);
if (Command->Completion != NULL)
{
complete(Command->Completion);
@@ -3161,7 +3164,7 @@
{
BufferHeader_T *NextBufferHeader = BufferHeader->b_reqnext;
BufferHeader->b_reqnext = NULL;
- DAC960_ProcessCompletedBuffer(BufferHeader, false);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, false);
BufferHeader = NextBufferHeader;
}
if (Command->Completion != NULL)
@@ -3169,6 +3172,7 @@
complete(Command->Completion);
Command->Completion = NULL;
}
+ blkdev_release_request(Command->Request);
}
}
else if (CommandType == DAC960_ReadRetryCommand ||
@@ -3180,12 +3184,12 @@
Perform completion processing for this single buffer.
*/
if (CommandStatus == DAC960_V1_NormalCompletion)
- DAC960_ProcessCompletedBuffer(BufferHeader, true);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, true);
else
{
if (CommandStatus != DAC960_V1_LogicalDriveNonexistentOrOffline)
DAC960_V1_ReadWriteError(Command);
- DAC960_ProcessCompletedBuffer(BufferHeader, false);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, false);
}
if (NextBufferHeader != NULL)
{
@@ -3203,6 +3207,7 @@
DAC960_QueueCommand(Command);
return;
}
+ blkdev_release_request(Command->Request);
}
else if (CommandType == DAC960_MonitoringCommand ||
CommandOpcode == DAC960_V1_Enquiry ||
@@ -4222,9 +4227,10 @@
{
BufferHeader_T *NextBufferHeader = BufferHeader->b_reqnext;
BufferHeader->b_reqnext = NULL;
- DAC960_ProcessCompletedBuffer(BufferHeader, true);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, true);
BufferHeader = NextBufferHeader;
}
+ blkdev_release_request(Command->Request);
if (Command->Completion != NULL)
{
complete(Command->Completion);
@@ -4267,9 +4273,10 @@
{
BufferHeader_T *NextBufferHeader = BufferHeader->b_reqnext;
BufferHeader->b_reqnext = NULL;
- DAC960_ProcessCompletedBuffer(BufferHeader, false);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, false);
BufferHeader = NextBufferHeader;
}
+ blkdev_release_request(Command->Request);
if (Command->Completion != NULL)
{
complete(Command->Completion);
@@ -4286,12 +4293,12 @@
Perform completion processing for this single buffer.
*/
if (CommandStatus == DAC960_V2_NormalCompletion)
- DAC960_ProcessCompletedBuffer(BufferHeader, true);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, true);
else
{
if (Command->V2.RequestSense.SenseKey != DAC960_SenseKey_NotReady)
DAC960_V2_ReadWriteError(Command);
- DAC960_ProcessCompletedBuffer(BufferHeader, false);
+ DAC960_ProcessCompletedBuffer(Command->Request, BufferHeader, false);
}
if (NextBufferHeader != NULL)
{
@@ -4319,6 +4326,7 @@
DAC960_QueueCommand(Command);
return;
}
+ blkdev_release_request(Command->Request);
}
else if (CommandType == DAC960_MonitoringCommand)
{
diff -ur linux-2.4.20_original/drivers/block/DAC960.h linux-2.4.20aa1/drivers/block/DAC960.h
--- linux-2.4.20_original/drivers/block/DAC960.h Wed Dec 4 16:52:50 2002
+++ linux-2.4.20aa1/drivers/block/DAC960.h Wed Dec 4 16:53:13 2002
@@ -2282,6 +2282,7 @@
unsigned int SegmentCount;
BufferHeader_T *BufferHeader;
void *RequestBuffer;
+ IO_Request_T *Request;
union {
struct {
DAC960_V1_CommandMailbox_T CommandMailbox;
@@ -4265,12 +4266,4 @@
static void DAC960_CreateProcEntries(void);
static void DAC960_DestroyProcEntries(void);

-
-/*
- Export the Kernel Mode IOCTL interface.
-*/
-
-EXPORT_SYMBOL(DAC960_KernelIOCTL);
-
-
#endif /* DAC960_DriverVersion */

--
J.A. Magallon <[email protected]> \ Software is like sex:
werewolf.able.es \ It's better when it's free
Mandrake Linux release 9.1 (Cooker) for i586
Linux 2.4.21-pre4-jam1 (gcc 3.2.1 (Mandrake Linux 9.1 3.2.1-5mdk))

2003-02-06 09:29:58

by Sergey S. Kostyliov

[permalink] [raw]
Subject: Re: 2.4.21pre4aa1 - hard lockup (PCnet32 related?).

Hello Andrea,

About 4 hours of heavy load on 2 of my boxs lead to hard lockup.

Before the lockup there are a lot of messages like:
"eth0: Bus master arbitration failure, status ffff"

There is no such problems on 2.4.18rc2aa1 and 2.4.19rc1aa2

Both Systems are IBM Netfinity 5100.

[rathamahata@bo linux]$ /sbin/lspci
00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 05)
00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 05)
00:01.0 VGA compatible controller: S3 Inc. Savage 4 (rev 04)
00:02.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet LANCE] (rev 44)
00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 4f)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04)
01:03.0 SCSI storage controller: Adaptec 7899P (rev 01)
01:03.1 SCSI storage controller: Adaptec 7899P (rev 01)
01:05.0 RAID bus controller: IBM Netfinity ServeRAID controller

[rathamahata@bo linux]$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 996.758
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips : 1985.74

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 996.758
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips : 1992.29

--
Best regards,
Sergey S. Kostyliov <[email protected]>
Public PGP key: http://sysadminday.org.ru/rathamahata.asc