summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
diff options
context:
space:
mode:
authoroster <oster@NetBSD.org>2004-03-07 02:46:58 +0000
committeroster <oster@NetBSD.org>2004-03-07 02:46:58 +0000
commitd02f580adf309a6603234e3ecc7d4973f4cbbdff (patch)
tree83dcc4baaaa00c0f0afcfc566e2b096b100585f7 /sys/dev/raidframe
parent5d72958991e6cec7d81e7e6e967b2be09675e12e (diff)
- fix up initialization of rf_recond_pool
- introduce rf_reconbuffer_pool and teach rf_MakeReconBuffer() to use it
Diffstat (limited to 'sys/dev/raidframe')
-rw-r--r--sys/dev/raidframe/rf_reconstruct.c22
-rw-r--r--sys/dev/raidframe/rf_reconstruct.h4
-rw-r--r--sys/dev/raidframe/rf_reconutil.c8
3 files changed, 25 insertions, 9 deletions
diff --git a/sys/dev/raidframe/rf_reconstruct.c b/sys/dev/raidframe/rf_reconstruct.c
index 99719fa5dea..c0e3770678d 100644
--- a/sys/dev/raidframe/rf_reconstruct.c
+++ b/sys/dev/raidframe/rf_reconstruct.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_reconstruct.c,v 1.72 2004/03/05 03:58:21 oster Exp $ */
+/* $NetBSD: rf_reconstruct.c,v 1.73 2004/03/07 02:46:58 oster Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -33,7 +33,7 @@
************************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.72 2004/03/05 03:58:21 oster Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.73 2004/03/07 02:46:58 oster Exp $");
#include <sys/time.h>
#include <sys/buf.h>
@@ -96,8 +96,12 @@ __KERNEL_RCSID(0, "$NetBSD: rf_reconstruct.c,v 1.72 2004/03/05 03:58:21 oster Ex
static struct pool rf_recond_pool;
-#define RF_MAX_FREE_RECOND 4
-#define RF_RECOND_INC 1
+#define RF_MAX_FREE_RECOND 10
+#define RF_MIN_FREE_RECOND 4
+
+struct pool rf_reconbuffer_pool;
+#define RF_MAX_FREE_RECONBUFFER 32
+#define RF_MIN_FREE_RECONBUFFER 16
static RF_RaidReconDesc_t *AllocRaidReconDesc(RF_Raid_t *, RF_RowCol_t,
RF_RaidDisk_t *, int, RF_RowCol_t);
@@ -150,6 +154,16 @@ rf_ConfigureReconstruction(RF_ShutdownList_t **listp)
pool_init(&rf_recond_pool, sizeof(RF_RaidReconDesc_t), 0, 0, 0,
"rf_recond_pl", NULL);
+ pool_sethiwat(&rf_recond_pool,RF_MAX_FREE_RECOND);
+ pool_prime(&rf_recond_pool,RF_MIN_FREE_RECOND);
+ pool_sethiwat(&rf_recond_pool,RF_MIN_FREE_RECOND);
+
+ pool_init(&rf_reconbuffer_pool, sizeof(RF_ReconBuffer_t), 0, 0, 0,
+ "rf_reconbuffer_pl", NULL);
+ pool_sethiwat(&rf_reconbuffer_pool,RF_MAX_FREE_RECONBUFFER);
+ pool_prime(&rf_reconbuffer_pool,RF_MIN_FREE_RECONBUFFER);
+ pool_sethiwat(&rf_reconbuffer_pool,RF_MIN_FREE_RECONBUFFER);
+
rf_ShutdownCreate(listp, rf_ShutdownReconstruction, NULL);
return (0);
diff --git a/sys/dev/raidframe/rf_reconstruct.h b/sys/dev/raidframe/rf_reconstruct.h
index 06fb560ab2b..b76089350a9 100644
--- a/sys/dev/raidframe/rf_reconstruct.h
+++ b/sys/dev/raidframe/rf_reconstruct.h
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_reconstruct.h,v 1.14 2004/03/03 16:59:54 oster Exp $ */
+/* $NetBSD: rf_reconstruct.h,v 1.15 2004/03/07 02:46:58 oster Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -189,4 +189,6 @@ rf_ForceOrBlockRecon(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap,
int rf_UnblockRecon(RF_Raid_t * raidPtr, RF_AccessStripeMap_t * asmap);
+extern struct pool rf_reconbuffer_pool;
+
#endif /* !_RF__RF_RECONSTRUCT_H_ */
diff --git a/sys/dev/raidframe/rf_reconutil.c b/sys/dev/raidframe/rf_reconutil.c
index e6ed08ee001..cb0ef20b151 100644
--- a/sys/dev/raidframe/rf_reconutil.c
+++ b/sys/dev/raidframe/rf_reconutil.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_reconutil.c,v 1.20 2004/01/01 19:27:36 oster Exp $ */
+/* $NetBSD: rf_reconutil.c,v 1.21 2004/03/07 02:46:59 oster Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -31,7 +31,7 @@
********************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_reconutil.c,v 1.20 2004/01/01 19:27:36 oster Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_reconutil.c,v 1.21 2004/03/07 02:46:59 oster Exp $");
#include <dev/raidframe/raidframevar.h>
@@ -219,7 +219,7 @@ rf_MakeReconBuffer(RF_Raid_t *raidPtr, RF_RowCol_t col, RF_RbufType_t type)
RF_ReconBuffer_t *t;
u_int recon_buffer_size = rf_RaidAddressToByte(raidPtr, layoutPtr->SUsPerRU * layoutPtr->sectorsPerStripeUnit);
- RF_Malloc(t, sizeof(RF_ReconBuffer_t), (RF_ReconBuffer_t *));
+ t = pool_get(&rf_reconbuffer_pool, PR_WAITOK);
RF_Malloc(t->buffer, recon_buffer_size, (caddr_t));
t->raidPtr = raidPtr;
t->col = col;
@@ -241,7 +241,7 @@ rf_FreeReconBuffer(RF_ReconBuffer_t *rbuf)
recon_buffer_size = rf_RaidAddressToByte(raidPtr, raidPtr->Layout.SUsPerRU * raidPtr->Layout.sectorsPerStripeUnit);
RF_Free(rbuf->buffer, recon_buffer_size);
- RF_Free(rbuf, sizeof(*rbuf));
+ pool_put(&rf_reconbuffer_pool, rbuf);
}
#if RF_DEBUG_RECON