RF_LOCK_MUTEX(raidPtr->mutex); raidPtr->reconInProgress--; RF_UNLOCK_MUTEX(raidPtr->mutex);
rf_ReconstructFailedDisk(raidPtr, row, col)	RF_Raid_t *raidPtr;	RF_RowCol_t row;	RF_RowCol_t col;{	RF_LayoutSW_t *lp;	int     rc;	lp = raidPtr->Layout.map;	if (lp->SubmitReconBuffer) {		/*	         * The current infrastructure only supports reconstructing one	         * disk at a time for each array.	         */		RF_LOCK_MUTEX(raidPtr->mutex);		while (raidPtr->reconInProgress) {			RF_WAIT_COND(raidPtr->waitForReconCond, raidPtr->mutex);		}		raidPtr->reconInProgress++;		RF_UNLOCK_MUTEX(raidPtr->mutex);		rc = rf_ReconstructFailedDiskBasic(raidPtr, row, col);	} else {		RF_ERRORMSG1("RECON: no way to reconstruct failed disk for arch %c\n",		    lp->parityConfig);		rc = EIO;	}	RF_LOCK_MUTEX(raidPtr->mutex);	raidPtr->reconInProgress--;	RF_UNLOCK_MUTEX(raidPtr->mutex);	RF_SIGNAL_COND(raidPtr->waitForReconCond);	wakeup(&raidPtr->waitForReconCond);	/* XXX Methinks this will be						 * needed at some point... GO */	return (rc);}