lkml.org 
[lkml]   [2000]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
From
SubjectRe: Linux 2.2.18pre17

On Thu, 19 Oct 2000, Alan Cox wrote:

> - Get to the bottom of the VM mystery if possible

The RAID problem (which is caused by VM changes) is the same deadlock
found in drbd and nbd.

It was not a problem with kernels < 2.2.17 because there was no write
throttling in shrink_mmap.

I'm attaching "raid-0.90-2.2.17.patch" and "raid-2.2.17.patch". They
should fix, respectively, raid 0.90 and stock 2.2.17 raid.

I haven't tested the patches.



--- linux/drivers/block/raid1.c.orig Thu Oct 19 18:18:25 2000
+++ linux/drivers/block/raid1.c Thu Oct 19 18:48:46 2000
@@ -40,7 +40,7 @@
* simply can not afford to fail an allocation because
* there is no failure return path (eg. make_request())
*/
- while (!(ptr = kmalloc (sizeof (raid1_conf_t), GFP_KERNEL)))
+ while (!(ptr = kmalloc (sizeof (raid1_conf_t), GFP_BUFFER)))
printk ("raid1: out of memory, retrying...\n");

memset(ptr, 0, size);--- linux/drivers/block/raid1.c.orig Thu Oct 19 19:03:16 2000
+++ linux/drivers/block/raid1.c Thu Oct 19 19:03:03 2000
@@ -209,7 +209,7 @@
PRINTK(("raid1_make_request().\n"));

while (!( /* FIXME: now we are rather fault tolerant than nice */
- r1_bh = kmalloc (sizeof (struct raid1_bh), GFP_KERNEL)
+ r1_bh = kmalloc (sizeof (struct raid1_bh), GFP_BUFFER)
) )
{
printk ("raid1_make_request(#1): out of memory\n");
@@ -301,7 +301,7 @@
* of this function to grok the difference ;)
*/
while (!( /* FIXME: now we are rather fault tolerant than nice */
- mirror_bh[i] = kmalloc (sizeof (struct buffer_head), GFP_KERNEL)
+ mirror_bh[i] = kmalloc (sizeof (struct buffer_head), GFP_BUFFER)
) )
{
printk ("raid1_make_request(#2): out of memory\n");
\
 
 \ /
  Last update: 2005-03-22 12:41    [W:0.076 / U:13.992 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site