Lines Matching defs:raidPtr
61 rf_ConfigureRAID1(RF_ShutdownList_t **listp, RF_Raid_t *raidPtr,
64 RF_RaidLayout_t *layoutPtr = &raidPtr->Layout;
69 if (raidPtr->numCol < 2 || raidPtr->numCol % 2 != 0) {
74 info = RF_MallocAndAdd(sizeof(*info), raidPtr->cleanupList);
80 info->stripeIdentifier = rf_make_2d_array(raidPtr->numCol / 2, 2, raidPtr->cleanupList);
83 for (i = 0; i < (raidPtr->numCol / 2); i++) {
92 raidPtr->totalSectors = layoutPtr->stripeUnitsPerDisk * (raidPtr->numCol / 2) * layoutPtr->sectorsPerStripeUnit;
93 layoutPtr->numStripe = layoutPtr->stripeUnitsPerDisk * (raidPtr->numCol / 2);
103 rf_MapSectorRAID1(RF_Raid_t *raidPtr, RF_RaidAddr_t raidSector,
107 RF_StripeNum_t SUID = raidSector / raidPtr->Layout.sectorsPerStripeUnit;
108 RF_RowCol_t mirrorPair = SUID % (raidPtr->numCol / 2);
111 *diskSector = ((SUID / (raidPtr->numCol / 2)) * raidPtr->Layout.sectorsPerStripeUnit) + (raidSector % raidPtr->Layout.sectorsPerStripeUnit);
121 rf_MapParityRAID1(RF_Raid_t *raidPtr, RF_RaidAddr_t raidSector,
125 RF_StripeNum_t SUID = raidSector / raidPtr->Layout.sectorsPerStripeUnit;
126 RF_RowCol_t mirrorPair = SUID % (raidPtr->numCol / 2);
130 *diskSector = ((SUID / (raidPtr->numCol / 2)) * raidPtr->Layout.sectorsPerStripeUnit) + (raidSector % raidPtr->Layout.sectorsPerStripeUnit);
139 rf_IdentifyStripeRAID1(RF_Raid_t *raidPtr, RF_RaidAddr_t addr,
142 RF_StripeNum_t stripeID = rf_RaidAddressToStripeID(&raidPtr->Layout, addr);
143 RF_Raid1ConfigInfo_t *info = raidPtr->Layout.layoutSpecificInfo;
146 *diskids = info->stripeIdentifier[stripeID % (raidPtr->numCol / 2)];
169 * Parameters: raidPtr - description of the physical array
176 rf_RAID1DagSelect(RF_Raid_t *raidPtr, RF_IoType_t type,
207 rstat = raidPtr->status;
210 rf_CheckRUReconstructed(raidPtr->reconControl->reconMap, failedPDA->startSector) : 0
219 failedPDA->col = raidPtr->Disks[fcol].spareCol;
237 raidPtr->raidid, type, oc,
257 rf_VerifyParityRAID1(RF_Raid_t *raidPtr, RF_RaidAddr_t raidAddr,
279 layoutPtr = &raidPtr->Layout;
282 nbytes = rf_RaidAddressToByte(raidPtr, nsector);
294 mcpair = rf_AllocMCPair(raidPtr);
306 raidPtr->raidid, (long) bf, bcount, (long) bf,
315 rd_dag_h = rf_MakeSimpleDAG(raidPtr, stripeWidth, nbytes, bf,
327 asm_h = rf_MapAccess(raidPtr, startAddr, layoutPtr->dataSectorsPerStripe,
338 rf_RangeRestrictPDA(raidPtr, parityPDA, pda, 0, 1);
341 if (rf_TryToRedirectPDA(raidPtr, pda, 0)) {
360 rf_RangeRestrictPDA(raidPtr, parityPDA, pda, 0, 1);
362 if (rf_TryToRedirectPDA(raidPtr, pda, 0)) {
382 raidPtr->raidid);
427 raidPtr->raidid, nbytes, i, (long) buf1,
446 printf("raid%d: RAID1: found bad parity, i=%d\n", raidPtr->raidid, i);
465 printf("raid%d: RAID1 parity verify: parity not correct\n", raidPtr->raidid);
477 wr_dag_h = rf_MakeSimpleDAG(raidPtr, nbad, nbytes, bf,
530 rf_FreeAccessStripeMap(raidPtr, asm_h);
536 rf_FreeMCPair(raidPtr, mcpair);
541 raidPtr->raidid, ret);
561 RF_Raid_t *raidPtr;
566 raidPtr = rbuf->raidPtr;
567 reconCtrlPtr = raidPtr->reconControl;
575 raidPtr->raidid, rbuf->col,
587 RF_LOCK_PSS_MUTEX(raidPtr, rbuf->parityStripeID);
596 pssPtr = rf_LookupRUStatus(raidPtr, reconCtrlPtr->pssTable,
611 raidPtr->raidid);
619 printf("raid%d: RAID1 rbuf submission: using committed rbuf\n", raidPtr->raidid);
630 printf("raid%d: RAID1 rbuf submission: using floating rbuf\n", raidPtr->raidid);
641 printf("raid%d: RAID1 rbuf submission: waiting for rbuf\n", raidPtr->raidid);
645 raidPtr->procsInBufWait++;
646 if ((raidPtr->procsInBufWait == (raidPtr->numCol - 1))
647 && (raidPtr->numFullReconBuffers == 0)) {
650 rf_PrintPSStatusTable(raidPtr);
654 cb = rf_AllocCallbackValueDesc(raidPtr);
692 rf_CheckForFullRbuf(raidPtr, reconCtrlPtr, pssPtr, 1);
695 RF_UNLOCK_PSS_MUTEX(raidPtr, rbuf->parityStripeID);
703 raidPtr->raidid, retcode);
710 rf_GetDefaultHeadSepLimitRAID1(RF_Raid_t *raidPtr)