Lines Matching defs:lockDesc

100 static void AddToWaitersQueue(RF_StripeLockDesc_t * lockDesc,
256 RF_StripeLockDesc_t *lockDesc;
286 for (lockDesc = lockTable[hashval].descList; lockDesc;
287 lockDesc = lockDesc->next) {
288 if (lockDesc->stripeID == stripeID)
292 if (!lockDesc) {
294 lockDesc = newlockDesc;
295 lockDesc->next = lockTable[hashval].descList;
296 lockTable[hashval].descList = lockDesc;
298 lockDesc->nWriters++;
299 lockDesc->granted = lockReqDesc;
312 lockDesc->nWriters++;
314 if (lockDesc->nWriters == 0) {
317 lockReqDesc->next = lockDesc->granted;
318 lockDesc->granted = lockReqDesc;
332 for (p = lockDesc->granted; p; p = p->next)
338 for (p = lockDesc->waitersH; p; p = p->next)
345 lockReqDesc->next = lockDesc->granted;
346 lockDesc->granted = lockReqDesc;
365 AddToWaitersQueue(lockDesc, lockReqDesc);
379 RF_StripeLockDesc_t *lockDesc, *ld_t;
407 for (ld_t = NULL, lockDesc = lockTable[hashval].descList;
408 lockDesc; ld_t = lockDesc, lockDesc = lockDesc->next) {
409 if (lockDesc->stripeID == stripeID)
412 RF_ASSERT(lockDesc); /* major error to release a lock that doesn't
416 for (lr_t = NULL, lr = lockDesc->granted; lr; lr_t = lr, lr = lr->next)
426 RF_ASSERT(lr == lockDesc->granted);
427 lockDesc->granted = lr->next;
432 lockDesc->nWriters--;
458 if (lockDesc->nWriters == 0) { /* performance tweak (1) */
459 while (lockDesc->waitersH) {
461 lr = lockDesc->waitersH;
462 lockDesc->waitersH = lr->next;
467 lr->next = lockDesc->granted;
468 lockDesc->granted = lr;
483 lockDesc->waitersT = NULL;
487 for (candidate_t = NULL, candidate = lockDesc->waitersH;
517 for (predecessor = lockDesc->granted; predecessor;
538 for (predecessor = lockDesc->waitersH;
568 if (lockDesc->waitersT == candidate)
569 lockDesc->waitersT = candidate_t; /* cannot be waitersH since candidate_t is not NULL */
571 RF_ASSERT(candidate == lockDesc->waitersH);
572 lockDesc->waitersH = lockDesc->waitersH->next;
573 if (!lockDesc->waitersH)
574 lockDesc->waitersT = NULL;
577 candidate->next = lockDesc->granted;
578 lockDesc->granted = candidate;
588 candidate = lockDesc->waitersH;
600 if (!lockDesc->granted && !lockDesc->waitersH) {
601 RF_ASSERT(lockDesc->nWriters == 0);
609 ld_t->next = lockDesc->next;
611 RF_ASSERT(lockDesc == lockTable[hashval].descList);
612 lockTable[hashval].descList = lockDesc->next;
614 FreeStripeLockDesc(raidPtr, lockDesc);
615 lockDesc = NULL;/* only for the ASSERT below */
624 RF_ASSERT(!((callbacklist) && (!lockDesc)));
634 AddToWaitersQueue(RF_StripeLockDesc_t *lockDesc, RF_LockReqDesc_t *lockReqDesc)
636 if (!lockDesc->waitersH) {
637 lockDesc->waitersH = lockDesc->waitersT = lockReqDesc;
639 lockDesc->waitersT->next = lockReqDesc;
640 lockDesc->waitersT = lockReqDesc;