Lines Matching defs:log
41 * Append-only log for recording parity "update" and "overwrite" records
66 /* Return a struct for holding common parity log information from the
90 /* Insert a single struct for holding parity log information (data)
106 /* Return a struct for holding parity log information from the free
131 /* Insert a linked list of structs for holding parity log information
155 /* Insert an in-core parity log (*data) into the head of a disk queue
160 printf("[enqueueing parity log data, region %d, raidAddress %d, numSector %d]\n", data->regionID, (int) data->diskAddress.raidAddress, (int) data->diskAddress.numSector);
192 /* Remove and return an in-core parity log from the tail of a disk
213 printf("[dequeueing parity log data, region %d, raidAddress %d, numSector %d]\n", data->regionID, (int) data->diskAddress.raidAddress, (int) data->diskAddress.numSector);
233 /* Insert an in-core parity log (*data) into the tail of a disk queue
239 printf("[requeueing parity log data, region %d, raidAddress %d, numSector %d]\n", data->regionID, (int) data->diskAddress.raidAddress, (int) data->diskAddress.numSector);
345 /* Remove and return an in-core parity log from a specified region
346 * (regionID). If a matching log is not found, return NULL.
389 printf("[dequeueing parity log data, region %d, raidAddress %d, numSector %d]\n", w->regionID, (int) w->diskAddress.raidAddress, (int) w->diskAddress.numSector);
408 /* Remove and return an in-core parity log from the tail of a disk
433 RF_ParityLog_t *log = NULL;
436 /* Grab a log buffer from the pool and return it. If no buffers are
441 log = raidPtr->parityLogPool.parityLogs;
443 log->regionID = logData->regionID;
444 log->numRecords = 0;
445 log->next = NULL;
450 * waiting on log buffers this is done while
454 printf("[blocked on log, region %d, finish %d]\n", logData->regionID, finish);
461 return (log);
470 RF_ParityLog_t *log, *lastLog;
486 log = firstLog;
489 log->numRecords = 0;
490 log->next = NULL;
491 while (logDataList && log) {
494 rf_ParityLogAppend(logDataList, RF_TRUE, &log, RF_FALSE);
496 printf("[finishing up buf-blocked log data, region %d]\n", logDataList->regionID);
497 if (log == NULL) {
498 log = firstLog;
501 log->numRecords = 0;
502 log->next = NULL;
507 if (log)
511 if (log) {
512 log->next = firstLog;
513 firstLog = log;
527 log = raidPtr->parityLogPool.parityLogs;
528 while (log) {
530 log = log->next;
542 RF_ParityLog_t * log)
544 RF_ASSERT(log);
546 /* Insert an in-core parity log (log) into the disk queue of
556 printf("[requesting reintegration of region %d]\n", log->regionID);
559 log->next = raidPtr->parityLogDiskQueue.reintQueue;
560 raidPtr->parityLogDiskQueue.reintQueue = log;
569 RF_ParityLog_t * log)
571 /* insert a core log (log) into a list of logs
575 RF_ASSERT(log);
576 RF_ASSERT(log->numRecords == raidPtr->numSectorsPerLog);
577 RF_ASSERT(log->next == NULL);
578 /* move log to flush queue */
580 log->next = raidPtr->parityLogDiskQueue.flushQueue;
581 raidPtr->parityLogDiskQueue.flushQueue = log;
592 RF_ParityLog_t *log;
597 /* Move a core log to disk. If the log disk is full, initiate
611 printf("[dumping parity log to disk, region %d]\n", regionID);
612 log = raidPtr->regionInfo[regionID].coreLog;
613 RF_ASSERT(log->numRecords == raidPtr->numSectorsPerLog);
614 RF_ASSERT(log->next == NULL);
642 raidPtr->regionInfo[regionID].diskMap[i + diskCount].operation = log->records[i].operation;
643 raidPtr->regionInfo[regionID].diskMap[i + diskCount].parityAddr = log->records[i].parityAddr;
645 log->diskOffset = diskCount;
647 FlushLog(raidPtr, log);
649 /* no room for log on disk, send it to disk manager and
652 ReintLog(raidPtr, regionID, log);
655 printf("[finished dumping parity log to disk, region %d]\n", regionID);
669 RF_ParityLog_t *log;
675 /* Add parity to the appropriate log, one sector at a time. This
681 * three places: 1) entered into the parity log 2) queued, waiting on
682 * reintegration 3) queued, waiting on a core log
720 printf("[appending parity log data, region %d, raidAddress %d, numSector %d]\n", item->regionID, (int) item->diskAddress.raidAddress, (int) item->diskAddress.numSector);
731 * log (AcquireParityLog) 2) waiting on
743 /* verify that a core log exists for this region */
745 /* Attempt to acquire a parity log. If
758 /* Note: AcquireParityLog either returns a log
762 punt = RF_TRUE; /* failed to find a core log */
765 /* verify that the log has room for new
767 /* if log is full, dump it to disk and grab a
768 * new log */
770 /* log is full, dump it to disk */
787 /* if a core log is not
791 punt = RF_TRUE; /* blocked on log
797 * sector to the core log */
800 /* at this point, we have a core log with
802 /* copy a sector into the log */
803 log = raidPtr->regionInfo[regionID].coreLog;
804 RF_ASSERT(log->numRecords < raidPtr->numSectorsPerLog);
805 logItem = log->numRecords++;
806 log->records[logItem].parityAddr = item->diskAddress;
807 RF_ASSERT(log->records[logItem].parityAddr.startSector >= raidPtr->regionInfo[regionID].parityStartAddr);
808 RF_ASSERT(log->records[logItem].parityAddr.startSector < raidPtr->regionInfo[regionID].parityStartAddr + raidPtr->regionInfo[regionID].numSectorsParity);
809 log->records[logItem].parityAddr.numSector = 1;
810 log->records[logItem].operation = item->common->operation;
811 memcpy((char *)log->bufPtr + (logItem * (1 << item->common->raidPtr->logBytesPerSector)), ((char *)item->common->bufPtr + (item->bufOffset++ * (1 << item->common->raidPtr->logBytesPerSector))), (1 << item->common->raidPtr->logBytesPerSector));
831 /* Finished processing all log data for this