Lines Matching refs:mapPtr
70 FreeReconMapListElem(RF_ReconMap_t *mapPtr, RF_ReconMapListElem_t * p);
134 rf_ReconMapUpdate(RF_Raid_t *raidPtr, RF_ReconMap_t *mapPtr,
137 RF_SectorCount_t sectorsPerReconUnit = mapPtr->sectorsPerReconUnit;
141 rf_lock_mutex2(mapPtr->mutex);
142 while(mapPtr->lock) {
143 rf_wait_cond2(mapPtr->cv, mapPtr->mutex);
145 mapPtr->lock = 1;
146 rf_unlock_mutex2(mapPtr->mutex);
147 RF_ASSERT(startSector >= 0 && stopSector < mapPtr->sectorsInDisk &&
151 i = startSector / mapPtr->sectorsPerReconUnit;
156 while (i > mapPtr->high_ru) {
165 if (mapPtr->status[mapPtr->head]!=RU_ALL) {
169 raidPtr->raidid, mapPtr->head);
172 raidPtr->raidid, mapPtr->low_ru, mapPtr->high_ru);
178 mapPtr->low_ru++;
179 mapPtr->high_ru++;
182 mapPtr->status[mapPtr->head]=RU_NOTHING;
185 mapPtr->head++;
186 if (mapPtr->head >= mapPtr->status_size)
187 mapPtr->head = 0;
191 ru = i - mapPtr->low_ru + mapPtr->head;
192 if (ru >= mapPtr->status_size)
193 ru = ru - mapPtr->status_size;
195 if ((ru < 0) || (ru >= mapPtr->status_size)) {
197 raidPtr->raidid, i, ru, mapPtr->head, mapPtr->low_ru, mapPtr->high_ru);
201 p = mapPtr->status[ru];
206 mapPtr->status[ru] = MakeReconMapListElem(mapPtr,startSector, RF_MIN(stopSector, last_in_RU), (p == RU_NOTHING) ? NULL : p);
213 pt->next = MakeReconMapListElem(mapPtr,startSector, RF_MIN(stopSector, last_in_RU), p);
216 compact_stat_entry(raidPtr, mapPtr, i, ru);
220 rf_lock_mutex2(mapPtr->mutex);
221 mapPtr->lock = 0;
222 rf_broadcast_cond2(mapPtr->cv);
223 rf_unlock_mutex2(mapPtr->mutex);
247 compact_stat_entry(RF_Raid_t *raidPtr, RF_ReconMap_t *mapPtr, int i, int j)
249 RF_SectorCount_t sectorsPerReconUnit = mapPtr->sectorsPerReconUnit;
250 RF_ReconMapListElem_t *p = mapPtr->status[j];
252 crunch_list(mapPtr, p);
257 mapPtr->status[j] = RU_ALL;
258 mapPtr->unitsLeft--;
259 FreeReconMapListElem(mapPtr, p);
265 crunch_list(RF_ReconMap_t *mapPtr, RF_ReconMapListElem_t *listPtr)
277 FreeReconMapListElem(mapPtr, p);
292 MakeReconMapListElem(RF_ReconMap_t *mapPtr, RF_SectorNum_t startSector,
297 p = pool_get(&mapPtr->elem_pool, PR_WAITOK);
310 FreeReconMapListElem(RF_ReconMap_t *mapPtr, RF_ReconMapListElem_t *p)
312 pool_put(&mapPtr->elem_pool, p);
321 rf_FreeReconMap(RF_ReconMap_t *mapPtr)
326 for (i = 0; i < mapPtr->status_size; i++) {
327 p = mapPtr->status[i];
335 rf_destroy_mutex2(mapPtr->mutex);
336 rf_destroy_cond2(mapPtr->cv);
338 pool_destroy(&mapPtr->elem_pool);
339 RF_Free(mapPtr->status, mapPtr->status_size *
341 RF_Free(mapPtr, sizeof(RF_ReconMap_t));
350 rf_CheckRUReconstructed(RF_ReconMap_t *mapPtr, RF_SectorNum_t startSector)
355 i = startSector / mapPtr->sectorsPerReconUnit;
357 if (i < mapPtr->low_ru)
359 else if (i > mapPtr->high_ru)
362 i = i - mapPtr->low_ru + mapPtr->head;
363 if (i >= mapPtr->status_size)
364 i = i - mapPtr->status_size;
365 if (mapPtr->status[i] == RU_ALL)
375 rf_UnitsLeftToReconstruct(RF_ReconMap_t *mapPtr)
377 RF_ASSERT(mapPtr != NULL);
378 return (mapPtr->unitsLeft);
383 rf_PrintReconSchedule(RF_ReconMap_t *mapPtr, struct timeval *starttime)
389 new_pctg = 100 - (rf_UnitsLeftToReconstruct(mapPtr) *
390 100 / mapPtr->totalRUs);