pkgsrc/net/nasd/patches/patch-an
agc 4b619e493a Initial import of nasd-1.3, a prototype storage implementation, from CMU.
The original tar file has trailing base64 checksums, so I have
repackaged the tar file for just now.

	This is release 1.3 of the Parallel Data Laboratory NASD
	software prototype.  The release includes the NASD drive
	prototype, the NASD-NFS filemanager, simple client APIs, a
	regression-testing suite, sample programs, a snapshot of
	Cheops (which is one implementation of aggregation over
	multiple NASDs), and some basic documentation.
2005-05-04 08:56:49 +00:00

355 lines
12 KiB
Text

$NetBSD: patch-an,v 1.1.1.1 2005/05/04 08:56:50 agc Exp $
Index: drive/nasd_cblock.c
===================================================================
RCS file: /usr/cvsroot/nasd/nasd-1.3/drive/nasd_cblock.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- drive/nasd_cblock.c 21 Mar 2005 08:52:02 -0000 1.1.1.1
+++ drive/nasd_cblock.c 21 Mar 2005 17:07:23 -0000 1.2
@@ -72,7 +72,7 @@
#define NASD_ODC_LOGICAL_INDEX_DEL(_ent_) { \
NASD_ASSERT((_ent_)->lru_flags&NASD_CL_LINDEX); \
- NASD_ODC_Q_DEQ_NOLOCK(ent,lh); \
+ NASD_ODC_Q_DEQ_NOLOCK(ent,lhnext,lhprev); \
(_ent_)->lru_flags &= ~NASD_CL_LINDEX; \
}
@@ -103,7 +103,7 @@
NASD_ASSERT(!((_ne_)->dirty_flags&NASD_CR_DIRTY_Q)); \
NASD_ASSERT((_ne_)->refcnt == 1); \
(_ne_)->lru_flags &= ~NASD_CL_LRU_Q; \
- NASD_ODC_Q_DEQ_NOLOCK((_ne_),l); \
+ NASD_ODC_Q_DEQ_NOLOCK((_ne_),lnext,lprev); \
nasd_odc_lru[(_ne_)->lru_num].size--; \
(_ne_)->lru_num = NASD_ODC_LRU_NONE; \
} \
@@ -194,7 +194,7 @@
}
else {
/* protected by LRU lock */
- NASD_ODC_Q_DEQ_TAIL_NOLOCK(&nasd_odc_unusedq,ent,l);
+ NASD_ODC_Q_DEQ_TAIL_NOLOCK(&nasd_odc_unusedq,ent,lnext,lprev);
*entp = ent;
NASD_ODC_CSINC(alloc_succeed);
rc = NASD_SUCCESS;
@@ -278,7 +278,7 @@
if (NASD_ODC_Q_SIZE(&nasd_odc_lru[lru_num]) == 0)
continue;
/* found an entry, dequeue it into ent */
- NASD_ODC_Q_DEQ_TAIL_NOLOCK(&nasd_odc_lru[lru_num],ent,l);
+ NASD_ODC_Q_DEQ_TAIL_NOLOCK(&nasd_odc_lru[lru_num],ent,lnext,lprev);
ent->chances++;
#if NASD_DRIVE_BLOCK_REPLACEMENT == 1
/*
@@ -287,7 +287,7 @@
* because it's in the LRU.
*/
if (ent->chances < nasd_odc_chances[ent->type]) {
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_lru[lru_num],ent,l);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_lru[lru_num],ent,lnext,lprev);
goto find_block;
}
#endif /* NASD_DRIVE_BLOCK_REPLACEMENT == 1 */
@@ -310,14 +310,14 @@
/* node block with child blocks in cache (or deleting) */
NASD_ASSERT(ent->type == NASD_ODC_T_NODE);
ent->lru_num = lru_num;
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_lru[lru_num],ent,l);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_lru[lru_num],ent,lnext,lprev);
ent->lru_flags |= NASD_CL_LRU_Q;
NASD_ODC_CSINC(grab_stillref);
goto find_block;
}
ent->chances = 0;
/* remove from hash bucket */
- NASD_ODC_Q_DEQ_NOLOCK(ent,h);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,hnext,hprev);
ent->hbucket->size--;
ent->hbucket = NULL;
*entp = ent;
@@ -332,7 +332,7 @@
}
/* remove from node-member list if applicable */
if (ent->node_ent) {
- NASD_ODC_Q_DEQ_NOLOCK(ent,o);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,onext,oprev);
ne = ent->node_ent;
ent->node_ent = NULL;
LOSE_IREF(ne);
@@ -527,7 +527,7 @@
NASD_ASSERT(!(ent->lru_flags&NASD_CL_LRU_Q));
ent->lru_num = lru_num;
ent->chances = 0;
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_lru[lru_num],ent,l);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_lru[lru_num],ent,lnext,lprev);
ent->lru_flags |= NASD_CL_LRU_Q;
/*
* We used to only broadcast this when the queue size went
@@ -737,7 +737,7 @@
ent->lru_flags &= ~NASD_CL_REMOVING;
if (ent->node_ent) {
NASD_ODC_CHECK_NODE_ENT(ent->node_ent);
- NASD_ODC_Q_DEQ_NOLOCK(ent,o);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,onext,oprev);
LOSE_IREF(ent->node_ent);
ent->node_ent = NULL;
}
@@ -782,7 +782,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 1 */
#if NASD_DRIVE_WIRE_NPT == 2
@@ -790,7 +790,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 2 */
#if NASD_DRIVE_WIRE_REFCNT > 0
@@ -798,7 +798,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_REFCNT > 0 */
if (node_ent) {
@@ -823,7 +823,7 @@
NASD_ASSERT(!(ent->dirty_flags&NASD_CR_DIRTY_Q));
NASD_ASSERT(ent->refcnt == 1);
ent->lru_flags &= ~NASD_CL_LRU_Q;
- NASD_ODC_Q_DEQ_NOLOCK(ent,l);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,lnext,lprev);
nasd_odc_lru[ent->lru_num].size--;
ent->lru_num = NASD_ODC_LRU_NONE;
}
@@ -832,7 +832,7 @@
NASD_ASSERT(!(ent->lru_flags&NASD_CL_LRU_Q));
NASD_ASSERT(ent->refcnt == 2);
ent->dirty_flags &= ~NASD_CR_DIRTY_Q;
- NASD_ODC_Q_DEQ_NOLOCK(ent,d);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,dnext,dprev);
ent->refcnt--;
}
}
@@ -885,7 +885,7 @@
nasd_nl_reg_init_ent(e);
#endif /* NASD_NL_REG_SCOREBOARD > 0 */
e->hbucket = bucket;
- NASD_ODC_Q_INS_NOLOCK(bucket,e,h);
+ NASD_ODC_Q_INS_NOLOCK(bucket,e,hnext,hprev);
unghost_lookup:
/* try to alloc an entry */
rc = nasd_odc_block_grab(&ent, ((flags&NASD_ODC_L_BLOCK) ? 1 : 0));
@@ -925,7 +925,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 1 */
#if NASD_DRIVE_WIRE_NPT == 2
@@ -933,7 +933,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 2 */
}
@@ -971,7 +971,7 @@
we_give_up:
NASD_ASSERT(e->refcnt == 1);
e->refcnt = 0;
- NASD_ODC_Q_DEQ_NOLOCK(e,h);
+ NASD_ODC_Q_DEQ_NOLOCK(e,hnext,hprev);
e->hbucket->size--;
e->hbucket = NULL;
otype = e->type;
@@ -1087,7 +1087,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 1 */
#if NASD_DRIVE_WIRE_NPT == 2
@@ -1095,7 +1095,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 2 */
return(NASD_SUCCESS);
@@ -1172,7 +1172,7 @@
ent->lru_flags &= ~NASD_CL_REMOVING;
if (ent->node_ent && (ent->node_ent != node_ent)) {
NASD_ODC_CHECK_NODE_ENT(ent->node_ent);
- NASD_ODC_Q_DEQ_NOLOCK(ent,o);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,onext,oprev);
LOSE_IREF(ent->node_ent);
ent->node_ent = NULL;
if (node_ent) {
@@ -1195,7 +1195,7 @@
NASD_ASSERT(!(ent->dirty_flags&NASD_CR_DIRTY_Q));
NASD_ASSERT(ent->refcnt == 1);
ent->lru_flags &= ~NASD_CL_LRU_Q;
- NASD_ODC_Q_DEQ_NOLOCK(ent,l);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,lnext,lprev);
nasd_odc_lru[ent->lru_num].size--;
ent->lru_num = NASD_ODC_LRU_NONE;
}
@@ -1204,7 +1204,7 @@
NASD_ASSERT(!(ent->lru_flags&NASD_CL_LRU_Q));
NASD_ASSERT(ent->refcnt == 2);
ent->dirty_flags &= ~NASD_CR_DIRTY_Q;
- NASD_ODC_Q_DEQ_NOLOCK(ent,d);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,dnext,dprev);
ent->refcnt--;
}
}
@@ -1256,7 +1256,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 1 */
#if NASD_DRIVE_WIRE_NPT == 2
@@ -1264,7 +1264,7 @@
/* mark it wired */
ent->lru_flags |= NASD_CL_WIRED;
/* record in wireq (list of wired blocks) */
- NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,w);
+ NASD_ODC_Q_INS_NOLOCK(&nasd_odc_wireq,ent,wnext,wprev);
}
#endif /* NASD_DRIVE_WIRE_NPT == 2 */
}
@@ -1346,7 +1346,7 @@
NASD_WAIT_COND(ent->cond,nasd_odc_lru_mutex);
}
ent->refcnt = 0;
- NASD_ODC_Q_DEQ_NOLOCK(ent,h);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,hnext,hprev);
ent->hbucket->size--;
ent->hbucket = NULL;
nasd_odc_put_ent(ent);
@@ -1453,7 +1453,7 @@
NASD_WAIT_COND(ent->cond,nasd_odc_lru_mutex);
}
ent->refcnt = 0;
- NASD_ODC_Q_DEQ_NOLOCK(ent,h);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,hnext,hprev);
ent->hbucket->size--;
ent->hbucket = NULL;
otype = ent->type;
@@ -1989,10 +1989,10 @@
NASD_DIRTY_UNLOCK();
ent->data_flags |= NASD_CD_INVALID;
ent->type = NASD_ODC_T_FREE;
- NASD_ODC_Q_INS(&nasd_odc_unusedq,ent,l);
+ NASD_ODC_Q_INS(&nasd_odc_unusedq,ent,lnext,lprev);
ent->lru_flags &= ~NASD_CL_REMOVING;
/* remove from hash bucket */
- NASD_ODC_Q_DEQ_NOLOCK(ent,h);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,hnext,hprev);
ent->hbucket->size--;
ent->hbucket = NULL;
/* remove from identity hash */
@@ -2004,7 +2004,7 @@
}
/* remove from node-member list iff applicable */
if (ent->node_ent) {
- NASD_ODC_Q_DEQ_NOLOCK(ent,o);
+ NASD_ODC_Q_DEQ_NOLOCK(ent,onext,oprev);
ne = ent->node_ent;
ent->node_ent = NULL;
LOSE_IREF(ne);
@@ -2075,7 +2075,7 @@
*/
NASD_ASSERT(e->lru_flags&NASD_CL_LRU_Q);
e->lru_flags &= ~NASD_CL_LRU_Q;
- NASD_ODC_Q_DEQ_NOLOCK(e,l);
+ NASD_ODC_Q_DEQ_NOLOCK(e,lnext,lprev);
irefonly:
NASD_ASSERT((e->lru_num >= 0) && (e->lru_num < NASD_ODC_NLRUS));
nasd_odc_lru[e->lru_num].size--;
@@ -2086,7 +2086,7 @@
else {
NASD_ASSERT(e->lru_flags&NASD_CL_LRU_Q);
e->lru_flags &= ~NASD_CL_LRU_Q;
- NASD_ODC_Q_DEQ_NOLOCK(e,l);
+ NASD_ODC_Q_DEQ_NOLOCK(e,lnext,lprev);
nasd_odc_lru[e->lru_num].size--;
e->lru_num = NASD_ODC_LRU_NONE;
noref:
@@ -2113,7 +2113,7 @@
NASD_ODC_LRU_LOCK();
ent->hbucket = bucket;
- NASD_ODC_Q_INS_NOLOCK(bucket,ent,h);
+ NASD_ODC_Q_INS_NOLOCK(bucket,ent,hnext,hprev);
NASD_ODC_LRU_UNLOCK();
}
@@ -2172,7 +2172,7 @@
NASD_ASSERT(!(e->dirty_flags&NASD_CR_DIRTY_Q));
NASD_ASSERT(e->refcnt == 0);
e->lru_flags &= ~NASD_CL_LRU_Q;
- NASD_ODC_Q_DEQ_NOLOCK(e,l);
+ NASD_ODC_Q_DEQ_NOLOCK(e,lnext,lprev);
nasd_odc_lru[e->lru_num].size--;
e->lru_num = NASD_ODC_LRU_NONE;
}
@@ -2181,7 +2181,7 @@
NASD_ASSERT(!(e->lru_flags&NASD_CL_LRU_Q));
NASD_ASSERT(e->refcnt == 1);
e->dirty_flags &= ~NASD_CR_DIRTY_Q;
- NASD_ODC_Q_DEQ_NOLOCK(e,d);
+ NASD_ODC_Q_DEQ_NOLOCK(e,dnext,dprev);
/* we now "own" the ref on this block */
wait_ent = e;
goto check_complete;
@@ -2298,7 +2298,7 @@
NASD_ASSERT(!(e->dirty_flags&NASD_CR_DIRTY_Q));
NASD_ASSERT(e->refcnt == 0);
e->lru_flags &= ~NASD_CL_LRU_Q;
- NASD_ODC_Q_DEQ_NOLOCK(e,l);
+ NASD_ODC_Q_DEQ_NOLOCK(e,lnext,lprev);
nasd_odc_lru[e->lru_num].size--;
e->lru_num = NASD_ODC_LRU_NONE;
}
@@ -2307,7 +2307,7 @@
NASD_ASSERT(!(e->lru_flags&NASD_CL_LRU_Q));
NASD_ASSERT(e->refcnt == 1);
e->dirty_flags &= ~NASD_CR_DIRTY_Q;
- NASD_ODC_Q_DEQ_NOLOCK(e,d);
+ NASD_ODC_Q_DEQ_NOLOCK(e,dnext,dprev);
/* we now "own" the ref on this block */
wait_ent = e;
goto check_complete;
@@ -2402,7 +2402,7 @@
for(e=ne->onext;e!=ne;e=next) {
next = e->onext;
NASD_ASSERT(e->node_ent == ne);
- NASD_ODC_Q_DEQ_NOLOCK(e,o);
+ NASD_ODC_Q_DEQ_NOLOCK(e,onext,oprev);
LOSE_IREF(ne);
e->node_ent = NULL;
}