Revision 494de90098784b8e2797598cefdd34188884ec2e authored by Mel Gorman on 03 July 2008, 04:27:51 UTC, committed by Linus Torvalds on 03 July 2008, 16:22:59 UTC
The non-NUMA case of build_zonelist_cache() would initialize the
zlcache_ptr for both node_zonelists[] to NULL.

Which is problematic, since non-NUMA only has a single node_zonelists[]
entry, and trying to zero the non-existent second one just overwrote the
nr_zones field instead.

As kswapd uses this value to determine what reclaim work is necessary,
the result is that kswapd never reclaims.  This causes processes to
stall frequently in low-memory situations as they always direct reclaim.
This patch initialises zlcache_ptr correctly.

Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Tested-by: Dan Williams <dan.j.williams@intel.com>
[ Simplified patch a bit ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent c461a97
Raw File
cpqarray.txt
This driver is for Compaq's SMART2 Intelligent Disk Array Controllers.

Supported Cards:
----------------

This driver is known to work with the following cards:

	* SMART (EISA)
	* SMART-2/E (EISA)
	* SMART-2/P
	* SMART-2DH
	* SMART-2SL
	* SMART-221
	* SMART-3100ES
	* SMART-3200
	* Integrated Smart Array Controller
	* SA 4200
	* SA 4250ES
	* SA 431
	* RAID LC2 Controller

It should also work with some really old Disk array adapters, but I am
unable to test against these cards:

	* IDA
	* IDA-2
	* IAES


EISA Controllers:
-----------------

If you want to use an EISA controller you'll have to supply some
modprobe/lilo parameters.  If the driver is compiled into the kernel, must
give it the controller's IO port address at boot time (it is not
necessary to specify the IRQ).  For example, if you had two SMART-2/E
controllers, in EISA slots 1 and 2 you'd give it a boot argument like
this:

	smart2=0x1000,0x2000

If you were loading the driver as a module, you'd give load it like this:

	modprobe cpqarray eisa=0x1000,0x2000

You can use EISA and PCI adapters at the same time.


Device Naming:
--------------

You need some entries in /dev for the ida device.  MAKEDEV in the /dev
directory can make device nodes for you automatically.  The device setup is
as follows:

Major numbers:
	72	ida0
	73	ida1
	74	ida2
	75	ida3
	76	ida4
	77	ida5
	78	ida6
	79	ida7

Minor numbers:
        b7 b6 b5 b4 b3 b2 b1 b0
        |----+----| |----+----|
             |           |
             |           +-------- Partition ID (0=wholedev, 1-15 partition)
             |
             +-------------------- Logical Volume number

The device naming scheme is:
/dev/ida/c0d0		Controller 0, disk 0, whole device
/dev/ida/c0d0p1		Controller 0, disk 0, partition 1
/dev/ida/c0d0p2		Controller 0, disk 0, partition 2
/dev/ida/c0d0p3		Controller 0, disk 0, partition 3

/dev/ida/c1d1		Controller 1, disk 1, whole device
/dev/ida/c1d1p1		Controller 1, disk 1, partition 1
/dev/ida/c1d1p2		Controller 1, disk 1, partition 2
/dev/ida/c1d1p3		Controller 1, disk 1, partition 3


Changelog:
==========

10-28-2004 :	General cleanup, syntax fixes for in-kernel driver version.
		James Nelson <james4765@gmail.com>


1999 :		Original Document
back to top