2.2.3-pre1+patch Success with RAID and DHCP

Mike Black (mblack@picard.csihq.com)
Sat, 6 Mar 1999 16:35:44 -0500


Good job guys!!

2.2.3-pre1 fixes the CONFIG_FILTER option which allows DHCP to work.

I had reported the mke2fs on an 3x8G RAID array was running out of memory.
I'm using raid0145-19990128-2.2.0.gz

Andrea Arcangeli <andrea@e-mind.com> posted a patch which I applied to
2.2.3-pre1 and I regenerated my RAID array with no problems at all. The
inode buffers looked like they got flushed out just fine -- no swapping
occurred, no out-of-memory conditions.

Here's the patch which allowed mke2fs on the RAID set:

Index: buffer.c
===================================================================
RCS file: /var/cvs/linux/fs/buffer.c,v
retrieving revision 1.1.2.22
diff -u -r1.1.2.22 buffer.c
--- buffer.c 1999/02/20 15:57:29 1.1.2.22
+++ linux/fs/buffer.c 1999/03/04 00:24:33
@@ -78,7 +78,6 @@

static int nr_buffers = 0;
static int nr_buffers_type[NR_LIST] = {0,};
-static int size_buffers_type[NR_LIST] = {0,};
static int nr_buffer_heads = 0;
static int nr_unused_buffer_heads = 0;

@@ -104,8 +103,7 @@
each time we call refill */
int nref_dirt; /* Dirty buffer threshold for activating bdflush
when trying to refill buffers. */
- int pct_dirt; /* Max %age of mem for dirty buffers before
- activating bdflush */
+ int dummy1; /* unused */
int age_buffer; /* Time for normal buffer to age before
we flush it */
int age_super; /* Time for superblock to age before we
@@ -486,7 +484,6 @@
return;
}
nr_buffers_type[bh->b_list]--;
- size_buffers_type[bh->b_list] -= bh->b_size;
remove_from_hash_queue(bh);
remove_from_lru_list(bh);
}
@@ -560,7 +557,6 @@
(*bhp)->b_prev_free = bh;

nr_buffers_type[bh->b_list]++;
- size_buffers_type[bh->b_list] += bh->b_size;

/* Put the buffer in new hash-queue if it has a device. */
bh->b_next = NULL;
@@ -814,19 +810,13 @@
file_buffer(buf, dispose);
if(dispose == BUF_DIRTY) {
int too_many = (nr_buffers * bdf_prm.b_un.nfract/100);
- int too_large = (num_physpages * bdf_prm.b_un.pct_dirt/100);

/* This buffer is dirty, maybe we need to start flushing.
* If too high a percentage of the buffers are dirty...
*/
- if (nr_buffers_type[BUF_DIRTY] > too_many ||
- size_buffers_type[BUF_DIRTY]/PAGE_SIZE > too_large) {
- if (nr_buffers_type[BUF_LOCKED] > 3 * bdf_prm.b_un.ndirty)
- wakeup_bdflush(1);
- else
- wakeup_bdflush(0);
- }
-
+ if (nr_buffers_type[BUF_DIRTY] > too_many)
+ wakeup_bdflush(1);
+
/* If this is a loop device, and
* more than half of the buffers are dirty...
* (Prevents no-free-buffers deadlock with loop device.)

________________________________________
Michael D. Black Principal Engineer
mblack@csi.cc 407-676-2923,x203
http://www.csi.cc Computer Science Innovations
http://www.csi.cc/~mike My home page
FAX 407-676-2355

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/