Lines Matching refs:raidPtr
62 AllocParityLogCommonData(RF_Raid_t * raidPtr) in AllocParityLogCommonData() argument
70 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in AllocParityLogCommonData()
71 if (raidPtr->parityLogDiskQueue.freeCommonList) { in AllocParityLogCommonData()
72 common = raidPtr->parityLogDiskQueue.freeCommonList; in AllocParityLogCommonData()
73 raidPtr->parityLogDiskQueue.freeCommonList = raidPtr->parityLogDiskQueue.freeCommonList->next; in AllocParityLogCommonData()
74 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in AllocParityLogCommonData()
76 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in AllocParityLogCommonData()
88 RF_Raid_t *raidPtr; in FreeParityLogCommonData() local
94 raidPtr = common->raidPtr; in FreeParityLogCommonData()
95 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in FreeParityLogCommonData()
96 common->next = raidPtr->parityLogDiskQueue.freeCommonList; in FreeParityLogCommonData()
97 raidPtr->parityLogDiskQueue.freeCommonList = common; in FreeParityLogCommonData()
98 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in FreeParityLogCommonData()
102 AllocParityLogData(RF_Raid_t * raidPtr) in AllocParityLogData() argument
110 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in AllocParityLogData()
111 if (raidPtr->parityLogDiskQueue.freeDataList) { in AllocParityLogData()
112 data = raidPtr->parityLogDiskQueue.freeDataList; in AllocParityLogData()
113 raidPtr->parityLogDiskQueue.freeDataList = raidPtr->parityLogDiskQueue.freeDataList->next; in AllocParityLogData()
114 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in AllocParityLogData()
116 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in AllocParityLogData()
129 RF_Raid_t *raidPtr; in FreeParityLogData() local
135 raidPtr = data->common->raidPtr; in FreeParityLogData()
136 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in FreeParityLogData()
139 data->next = raidPtr->parityLogDiskQueue.freeDataList; in FreeParityLogData()
140 raidPtr->parityLogDiskQueue.freeDataList = data; in FreeParityLogData()
143 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in FreeParityLogData()
153 RF_Raid_t *raidPtr; in EnqueueParityLogData() local
158 raidPtr = data->common->raidPtr; in EnqueueParityLogData()
163 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in EnqueueParityLogData()
180 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in EnqueueParityLogData()
185 RF_Raid_t * raidPtr, in DequeueParityLogData() argument
197 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in DequeueParityLogData()
220 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in DequeueParityLogData()
231 RF_Raid_t *raidPtr; in RequeueParityLogData() local
236 raidPtr = data->common->raidPtr; in RequeueParityLogData()
240 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in RequeueParityLogData()
256 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in RequeueParityLogData()
264 RF_Raid_t * raidPtr, in rf_CreateParityLogData() argument
281 common = AllocParityLogCommonData(raidPtr); in rf_CreateParityLogData()
286 common->raidPtr = raidPtr; in rf_CreateParityLogData()
297 data = AllocParityLogData(raidPtr); in rf_CreateParityLogData()
302 data->regionID = rf_MapRegionIDParityLogging(raidPtr, diskAddress->startSector); in rf_CreateParityLogData()
303 …if (data->regionID == rf_MapRegionIDParityLogging(raidPtr, diskAddress->startSector + diskAddress-… in rf_CreateParityLogData()
315 …while (data->regionID == rf_MapRegionIDParityLogging(raidPtr, diskAddress->startSector + boundary)) in rf_CreateParityLogData()
337 RF_Raid_t * raidPtr, in rf_SearchAndDequeueParityLogData() argument
353 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_SearchAndDequeueParityLogData()
395 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_SearchAndDequeueParityLogData()
401 RF_Raid_t * raidPtr, in DequeueMatchingLogData() argument
414 logDataList = DequeueParityLogData(raidPtr, head, tail, RF_TRUE); in DequeueMatchingLogData()
418 logData->next = rf_SearchAndDequeueParityLogData(raidPtr, regionID, head, tail, RF_TRUE); in DequeueMatchingLogData()
421 logData->next = rf_SearchAndDequeueParityLogData(raidPtr, regionID, head, tail, RF_TRUE); in DequeueMatchingLogData()
434 RF_Raid_t *raidPtr; in AcquireParityLog() local
438 raidPtr = logData->common->raidPtr; in AcquireParityLog()
439 rf_lock_mutex2(raidPtr->parityLogPool.mutex); in AcquireParityLog()
440 if (raidPtr->parityLogPool.parityLogs) { in AcquireParityLog()
441 log = raidPtr->parityLogPool.parityLogs; in AcquireParityLog()
442 raidPtr->parityLogPool.parityLogs = raidPtr->parityLogPool.parityLogs->next; in AcquireParityLog()
446 raidPtr->logsInUse++; in AcquireParityLog()
447 RF_ASSERT(raidPtr->logsInUse >= 0 && raidPtr->logsInUse <= raidPtr->numParityLogs); in AcquireParityLog()
456 …RequeueParityLogData(logData, &raidPtr->parityLogDiskQueue.logBlockHead, &raidPtr->parityLogDiskQu… in AcquireParityLog()
458 …EnqueueParityLogData(logData, &raidPtr->parityLogDiskQueue.logBlockHead, &raidPtr->parityLogDiskQu… in AcquireParityLog()
460 rf_unlock_mutex2(raidPtr->parityLogPool.mutex); in AcquireParityLog()
466 RF_Raid_t * raidPtr, in rf_ReleaseParityLogs() argument
483 rf_lock_mutex2(raidPtr->parityLogPool.mutex); in rf_ReleaseParityLogs()
484 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_ReleaseParityLogs()
485 …logDataList = DequeueMatchingLogData(raidPtr, &raidPtr->parityLogDiskQueue.logBlockHead, &raidPtr-… in rf_ReleaseParityLogs()
492 rf_unlock_mutex2(raidPtr->parityLogPool.mutex); in rf_ReleaseParityLogs()
493 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_ReleaseParityLogs()
505 rf_lock_mutex2(raidPtr->parityLogPool.mutex); in rf_ReleaseParityLogs()
506 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_ReleaseParityLogs()
508 …logDataList = DequeueMatchingLogData(raidPtr, &raidPtr->parityLogDiskQueue.logBlockHead, &raidPtr-… in rf_ReleaseParityLogs()
517 raidPtr->logsInUse--; in rf_ReleaseParityLogs()
518 RF_ASSERT(raidPtr->logsInUse >= 0 && raidPtr->logsInUse <= raidPtr->numParityLogs); in rf_ReleaseParityLogs()
521 raidPtr->logsInUse--; in rf_ReleaseParityLogs()
522 RF_ASSERT(raidPtr->logsInUse >= 0 && raidPtr->logsInUse <= raidPtr->numParityLogs); in rf_ReleaseParityLogs()
524 lastLog->next = raidPtr->parityLogPool.parityLogs; in rf_ReleaseParityLogs()
525 raidPtr->parityLogPool.parityLogs = firstLog; in rf_ReleaseParityLogs()
527 log = raidPtr->parityLogPool.parityLogs; in rf_ReleaseParityLogs()
532 RF_ASSERT(cnt + raidPtr->logsInUse == raidPtr->numParityLogs); in rf_ReleaseParityLogs()
534 rf_unlock_mutex2(raidPtr->parityLogPool.mutex); in rf_ReleaseParityLogs()
535 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_ReleaseParityLogs()
540 RF_Raid_t * raidPtr, in ReintLog() argument
551 rf_lock_mutex2(raidPtr->regionInfo[regionID].reintMutex); in ReintLog()
552 raidPtr->regionInfo[regionID].reintInProgress = RF_TRUE; /* cleared when reint in ReintLog()
558 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in ReintLog()
559 log->next = raidPtr->parityLogDiskQueue.reintQueue; in ReintLog()
560 raidPtr->parityLogDiskQueue.reintQueue = log; in ReintLog()
561 rf_unlock_mutex2(raidPtr->regionInfo[regionID].reintMutex); in ReintLog()
562 rf_signal_cond2(raidPtr->parityLogDiskQueue.cond); in ReintLog()
563 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in ReintLog()
568 RF_Raid_t * raidPtr, in FlushLog() argument
576 RF_ASSERT(log->numRecords == raidPtr->numSectorsPerLog); in FlushLog()
579 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in FlushLog()
580 log->next = raidPtr->parityLogDiskQueue.flushQueue; in FlushLog()
581 raidPtr->parityLogDiskQueue.flushQueue = log; in FlushLog()
582 rf_signal_cond2(raidPtr->parityLogDiskQueue.cond); in FlushLog()
583 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in FlushLog()
593 RF_Raid_t *raidPtr; in DumpParityLogToDisk() local
595 raidPtr = logData->common->raidPtr; in DumpParityLogToDisk()
608 RF_ASSERT(rf_owned_mutex2(raidPtr->regionInfo[regionID].mutex)); in DumpParityLogToDisk()
612 log = raidPtr->regionInfo[regionID].coreLog; in DumpParityLogToDisk()
613 RF_ASSERT(log->numRecords == raidPtr->numSectorsPerLog); in DumpParityLogToDisk()
617 rf_lock_mutex2(raidPtr->regionInfo[regionID].reintMutex); in DumpParityLogToDisk()
618 if (raidPtr->regionInfo[regionID].reintInProgress) { in DumpParityLogToDisk()
627 …RequeueParityLogData(logData, &raidPtr->parityLogDiskQueue.reintBlockHead, &raidPtr->parityLogDisk… in DumpParityLogToDisk()
629 …EnqueueParityLogData(logData, &raidPtr->parityLogDiskQueue.reintBlockHead, &raidPtr->parityLogDisk… in DumpParityLogToDisk()
630 rf_unlock_mutex2(raidPtr->regionInfo[regionID].reintMutex); in DumpParityLogToDisk()
633 rf_unlock_mutex2(raidPtr->regionInfo[regionID].reintMutex); in DumpParityLogToDisk()
634 raidPtr->regionInfo[regionID].coreLog = NULL; in DumpParityLogToDisk()
635 if ((raidPtr->regionInfo[regionID].diskCount) < raidPtr->regionInfo[regionID].capacity) in DumpParityLogToDisk()
640 diskCount = raidPtr->regionInfo[regionID].diskCount; in DumpParityLogToDisk()
641 for (i = 0; i < raidPtr->numSectorsPerLog; i++) { in DumpParityLogToDisk()
642 raidPtr->regionInfo[regionID].diskMap[i + diskCount].operation = log->records[i].operation; in DumpParityLogToDisk()
643 raidPtr->regionInfo[regionID].diskMap[i + diskCount].parityAddr = log->records[i].parityAddr; in DumpParityLogToDisk()
646 raidPtr->regionInfo[regionID].diskCount += raidPtr->numSectorsPerLog; in DumpParityLogToDisk()
647 FlushLog(raidPtr, log); in DumpParityLogToDisk()
651 RF_ASSERT(raidPtr->regionInfo[regionID].diskCount == raidPtr->regionInfo[regionID].capacity); in DumpParityLogToDisk()
652 ReintLog(raidPtr, regionID, log); in DumpParityLogToDisk()
670 RF_Raid_t *raidPtr; in rf_ParityLogAppend() local
690 raidPtr = logData->common->raidPtr; in rf_ParityLogAppend()
694 rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex); in rf_ParityLogAppend()
695 RF_ASSERT(raidPtr->regionInfo[regionID].loggingEnabled); in rf_ParityLogAppend()
700 rf_lock_mutex2(raidPtr->regionInfo[regionID].reintMutex); in rf_ParityLogAppend()
702 rf_lock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_ParityLogAppend()
703 RF_ASSERT(raidPtr->regionInfo[regionID].reintInProgress == RF_TRUE); in rf_ParityLogAppend()
704 raidPtr->regionInfo[regionID].diskCount = 0; in rf_ParityLogAppend()
705 raidPtr->regionInfo[regionID].reintInProgress = RF_FALSE; in rf_ParityLogAppend()
706 rf_unlock_mutex2(raidPtr->regionInfo[regionID].reintMutex); /* flushing is now in rf_ParityLogAppend()
709 rf_unlock_mutex2(raidPtr->parityLogDiskQueue.mutex); in rf_ParityLogAppend()
724 rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex); in rf_ParityLogAppend()
726 rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex); in rf_ParityLogAppend()
727 RF_ASSERT(raidPtr->regionInfo[regionID].loggingEnabled); in rf_ParityLogAppend()
744 if (!raidPtr->regionInfo[regionID].coreLog) { in rf_ParityLogAppend()
751 raidPtr->regionInfo[regionID].coreLog = *incomingLog; in rf_ParityLogAppend()
752 raidPtr->regionInfo[regionID].coreLog->regionID = regionID; in rf_ParityLogAppend()
755 raidPtr->regionInfo[regionID].coreLog = AcquireParityLog(item, finish); in rf_ParityLogAppend()
757 raidPtr->regionInfo[regionID].coreLog = AcquireParityLog(item, finish); in rf_ParityLogAppend()
761 if (!raidPtr->regionInfo[regionID].coreLog) in rf_ParityLogAppend()
764 RF_ASSERT(raidPtr->regionInfo[regionID].coreLog->next == NULL); in rf_ParityLogAppend()
769 if (raidPtr->regionInfo[regionID].coreLog->numRecords == raidPtr->numSectorsPerLog) { in rf_ParityLogAppend()
780 raidPtr->regionInfo[regionID].coreLog = *incomingLog; in rf_ParityLogAppend()
781 raidPtr->regionInfo[regionID].coreLog->regionID = regionID; in rf_ParityLogAppend()
784 raidPtr->regionInfo[regionID].coreLog = AcquireParityLog(item, finish); in rf_ParityLogAppend()
786 raidPtr->regionInfo[regionID].coreLog = AcquireParityLog(item, finish); in rf_ParityLogAppend()
790 if (!raidPtr->regionInfo[regionID].coreLog) in rf_ParityLogAppend()
799 RF_ASSERT(raidPtr->regionInfo[regionID].coreLog->next == NULL); in rf_ParityLogAppend()
803 log = raidPtr->regionInfo[regionID].coreLog; in rf_ParityLogAppend()
804 RF_ASSERT(log->numRecords < raidPtr->numSectorsPerLog); in rf_ParityLogAppend()
807 …RF_ASSERT(log->records[logItem].parityAddr.startSector >= raidPtr->regionInfo[regionID].parityStar… in rf_ParityLogAppend()
808 …T(log->records[logItem].parityAddr.startSector < raidPtr->regionInfo[regionID].parityStartAddr + r… in rf_ParityLogAppend()
811 …raidPtr->logBytesPerSector)), ((char *)item->common->bufPtr + (item->bufOffset++ * (1 << item->com… in rf_ParityLogAppend()
850 rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex); in rf_ParityLogAppend()
858 rf_EnableParityLogging(RF_Raid_t * raidPtr) in rf_EnableParityLogging() argument
863 rf_lock_mutex2(raidPtr->regionInfo[regionID].mutex); in rf_EnableParityLogging()
864 raidPtr->regionInfo[regionID].loggingEnabled = RF_TRUE; in rf_EnableParityLogging()
865 rf_unlock_mutex2(raidPtr->regionInfo[regionID].mutex); in rf_EnableParityLogging()