diff options
| author | oster <oster@NetBSD.org> | 2004-03-07 02:46:58 +0000 |
|---|---|---|
| committer | oster <oster@NetBSD.org> | 2004-03-07 02:46:58 +0000 |
| commit | d02f580adf309a6603234e3ecc7d4973f4cbbdff (patch) | |
| tree | 83dcc4baaaa00c0f0afcfc566e2b096b100585f7 /sys/dev/raidframe | |
| parent | 5d72958991e6cec7d81e7e6e967b2be09675e12e (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.c | 22 | ||||
| -rw-r--r-- | sys/dev/raidframe/rf_reconstruct.h | 4 | ||||
| -rw-r--r-- | sys/dev/raidframe/rf_reconutil.c | 8 |
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 |
