summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/raidframe')
-rw-r--r--sys/dev/raidframe/rf_psstatus.c52
-rw-r--r--sys/dev/raidframe/rf_raid.h5
2 files changed, 20 insertions, 37 deletions
diff --git a/sys/dev/raidframe/rf_psstatus.c b/sys/dev/raidframe/rf_psstatus.c
index 6cc6537396f..bb2a5514d14 100644
--- a/sys/dev/raidframe/rf_psstatus.c
+++ b/sys/dev/raidframe/rf_psstatus.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_psstatus.c,v 1.10 2002/09/19 22:52:52 oster Exp $ */
+/* $NetBSD: rf_psstatus.c,v 1.11 2002/10/11 02:10:09 oster Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -37,7 +37,7 @@
*****************************************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_psstatus.c,v 1.10 2002/09/19 22:52:52 oster Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_psstatus.c,v 1.11 2002/10/11 02:10:09 oster Exp $");
#include <dev/raidframe/raidframevar.h>
@@ -66,36 +66,16 @@ RealPrintPSStatusTable(RF_Raid_t * raidPtr,
#define RF_PSS_INC 8
#define RF_PSS_INITIAL 4
-static int init_pss(RF_ReconParityStripeStatus_t *, RF_Raid_t *);
-static void clean_pss(RF_ReconParityStripeStatus_t *, RF_Raid_t *);
static void rf_ShutdownPSStatus(void *);
-static int
-init_pss(p, raidPtr)
- RF_ReconParityStripeStatus_t *p;
- RF_Raid_t *raidPtr;
-{
- RF_Calloc(p->issued, raidPtr->numCol, sizeof(char), (char *));
- if (p->issued == NULL)
- return (ENOMEM);
- return (0);
-}
-
-static void
-clean_pss(p, raidPtr)
- RF_ReconParityStripeStatus_t *p;
- RF_Raid_t *raidPtr;
-{
- RF_Free(p->issued, raidPtr->numCol * sizeof(char));
-}
-
static void
rf_ShutdownPSStatus(arg)
void *arg;
{
RF_Raid_t *raidPtr = (RF_Raid_t *) arg;
- RF_FREELIST_DESTROY_CLEAN_ARG(raidPtr->pss_freelist, next, (RF_ReconParityStripeStatus_t *), clean_pss, raidPtr);
+ pool_destroy(&raidPtr->pss_pool);
+ pool_destroy(&raidPtr->pss_issued_pool);
}
int
@@ -107,18 +87,20 @@ rf_ConfigurePSStatus(
int rc;
raidPtr->pssTableSize = RF_PSS_DEFAULT_TABLESIZE;
- RF_FREELIST_CREATE(raidPtr->pss_freelist, RF_MAX_FREE_PSS,
- RF_PSS_INC, sizeof(RF_ReconParityStripeStatus_t));
- if (raidPtr->pss_freelist == NULL)
- return (ENOMEM);
+ pool_init(&raidPtr->pss_pool, sizeof(RF_ReconParityStripeStatus_t), 0,
+ 0, RF_PSS_INITIAL, "raidpsspl", NULL);
+ pool_init(&raidPtr->pss_issued_pool,
+ raidPtr->numCol * sizeof(char), 0,
+ 0, RF_PSS_INITIAL, "raidpssissuedpl", NULL);
rc = rf_ShutdownCreate(listp, rf_ShutdownPSStatus, raidPtr);
if (rc) {
rf_print_unable_to_add_shutdown(__FILE__, __LINE__, rc);
rf_ShutdownPSStatus(raidPtr);
return (rc);
}
- RF_FREELIST_PRIME_INIT_ARG(raidPtr->pss_freelist, RF_PSS_INITIAL, next,
- (RF_ReconParityStripeStatus_t *), init_pss, raidPtr);
+ pool_sethiwat(&raidPtr->pss_pool, RF_MAX_FREE_PSS);
+ pool_sethiwat(&raidPtr->pss_issued_pool, RF_MAX_FREE_PSS);
+
return (0);
}
/*****************************************************************************************
@@ -311,10 +293,9 @@ rf_AllocPSStatus(raidPtr)
{
RF_ReconParityStripeStatus_t *p;
- RF_FREELIST_GET_INIT_ARG(raidPtr->pss_freelist, p, next, (RF_ReconParityStripeStatus_t *), init_pss, raidPtr);
- if (p) {
- memset(p->issued, 0, raidPtr->numCol);
- }
+ p = pool_get(&raidPtr->pss_pool, PR_NOWAIT);
+ p->issued = pool_get(&raidPtr->pss_issued_pool, PR_NOWAIT);
+ memset(p->issued, 0, raidPtr->numCol);
p->next = NULL;
/* no need to initialize here b/c the only place we're called from is
* the above Lookup */
@@ -330,7 +311,8 @@ rf_FreePSStatus(raidPtr, p)
RF_ASSERT(p->blockWaitList == NULL);
RF_ASSERT(p->bufWaitList == NULL);
- RF_FREELIST_FREE_CLEAN_ARG(raidPtr->pss_freelist, p, next, clean_pss, raidPtr);
+ pool_put(&raidPtr->pss_issued_pool, p->issued);
+ pool_put(&raidPtr->pss_pool, p);
}
static void
diff --git a/sys/dev/raidframe/rf_raid.h b/sys/dev/raidframe/rf_raid.h
index 473aca767b1..b9f9ca56112 100644
--- a/sys/dev/raidframe/rf_raid.h
+++ b/sys/dev/raidframe/rf_raid.h
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_raid.h,v 1.15 2002/10/04 20:05:14 oster Exp $ */
+/* $NetBSD: rf_raid.h,v 1.16 2002/10/11 02:10:08 oster Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -229,8 +229,9 @@ struct RF_Raid_s {
/*
* PSS (Parity Stripe Status) stuff
*/
- RF_FreeList_t *pss_freelist;
long pssTableSize;
+ struct pool pss_pool;
+ struct pool pss_issued_pool;
/*
* Reconstruction stuff