[BACK]Return to rf_evenodd_dagfuncs.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev / raidframe

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/dev/raidframe/rf_evenodd_dagfuncs.c between version 1.7 and 1.7.2.1

version 1.7, 2001/01/26 03:50:53 version 1.7.2.1, 2001/08/24 00:10:35
Line 410  rf_RecoveryEFunc(node)
Line 410  rf_RecoveryEFunc(node)
         RF_AccTraceEntry_t *tracerec = node->dagHdr->tracerec;          RF_AccTraceEntry_t *tracerec = node->dagHdr->tracerec;
         RF_Etimer_t timer;          RF_Etimer_t timer;
   
         bzero((char *) node->results[0], rf_RaidAddressToByte(raidPtr, failedPDA->numSector));          memset((char *) node->results[0], 0,
               rf_RaidAddressToByte(raidPtr, failedPDA->numSector));
         if (node->dagHdr->status == rf_enable) {          if (node->dagHdr->status == rf_enable) {
                 RF_ETIMER_START(timer);                  RF_ETIMER_START(timer);
                 for (i = 0; i < node->numParams - 2; i += 2)                  for (i = 0; i < node->numParams - 2; i += 2)
Line 495  rf_doubleEOdecode(
Line 496  rf_doubleEOdecode(
 #endif  #endif
         RF_ASSERT(*((long *) dest[0]) == 0);          RF_ASSERT(*((long *) dest[0]) == 0);
         RF_ASSERT(*((long *) dest[1]) == 0);          RF_ASSERT(*((long *) dest[1]) == 0);
         bzero((char *) P, bytesPerEU);          memset((char *) P, 0, bytesPerEU);
         bzero((char *) temp, bytesPerEU);          memset((char *) temp, 0, bytesPerEU);
         RF_ASSERT(*P == 0);          RF_ASSERT(*P == 0);
         /* calculate the 'P' parameter, which, not parity, is the Xor of all          /* calculate the 'P' parameter, which, not parity, is the Xor of all
          * elements in the last two column, ie. 'E' and 'parity' colume, see           * elements in the last two column, ie. 'E' and 'parity' colume, see
Line 710  rf_EvenOddDoubleRecoveryFunc(node)
Line 711  rf_EvenOddDoubleRecoveryFunc(node)
         if (nresults == 1) {          if (nresults == 1) {
                 /* find the startSector to begin decoding */                  /* find the startSector to begin decoding */
                 pda = node->results[0];                  pda = node->results[0];
                 bzero(pda->bufPtr, bytesPerSector * pda->numSector);                  memset(pda->bufPtr, 0, bytesPerSector * pda->numSector);
                 fsuoff[0] = rf_StripeUnitOffset(layoutPtr, pda->startSector);                  fsuoff[0] = rf_StripeUnitOffset(layoutPtr, pda->startSector);
                 fsuend[0] = fsuoff[0] + pda->numSector;                  fsuend[0] = fsuoff[0] + pda->numSector;
                 startSector = fsuoff[0];                  startSector = fsuoff[0];
Line 734  rf_EvenOddDoubleRecoveryFunc(node)
Line 735  rf_EvenOddDoubleRecoveryFunc(node)
         } else {          } else {
                 RF_ASSERT(nresults == 2);                  RF_ASSERT(nresults == 2);
                 pda0 = node->results[0];                  pda0 = node->results[0];
                 bzero(pda0->bufPtr, bytesPerSector * pda0->numSector);                  memset(pda0->bufPtr, 0, bytesPerSector * pda0->numSector);
                 pda1 = node->results[1];                  pda1 = node->results[1];
                 bzero(pda1->bufPtr, bytesPerSector * pda1->numSector);                  memset(pda1->bufPtr, 0, bytesPerSector * pda1->numSector);
                 /* determine the failed colume numbers of the two failed                  /* determine the failed colume numbers of the two failed
                  * disks. */                   * disks. */
                 fcol[0] = rf_EUCol(layoutPtr, pda0->raidAddress);                  fcol[0] = rf_EUCol(layoutPtr, pda0->raidAddress);
Line 786  rf_EvenOddDoubleRecoveryFunc(node)
Line 787  rf_EvenOddDoubleRecoveryFunc(node)
                         dest[0] = ((RF_PhysDiskAddr_t *) node->results[0])->bufPtr + rf_RaidAddressToByte(raidPtr, sector - fsuoff[0]);                          dest[0] = ((RF_PhysDiskAddr_t *) node->results[0])->bufPtr + rf_RaidAddressToByte(raidPtr, sector - fsuoff[0]);
                         /* Always malloc temp buffer to dest[1]  */                          /* Always malloc temp buffer to dest[1]  */
                         RF_Malloc(dest[1], bytesPerSector, (char *));                          RF_Malloc(dest[1], bytesPerSector, (char *));
                         bzero(dest[1], bytesPerSector);                          memset(dest[1], 0, bytesPerSector);
                         mallc_two = 1;                          mallc_two = 1;
                 } else {                  } else {
                         if (fsuoff[0] <= sector && sector < fsuend[0])                          if (fsuoff[0] <= sector && sector < fsuend[0])
                                 dest[0] = ((RF_PhysDiskAddr_t *) node->results[0])->bufPtr + rf_RaidAddressToByte(raidPtr, sector - fsuoff[0]);                                  dest[0] = ((RF_PhysDiskAddr_t *) node->results[0])->bufPtr + rf_RaidAddressToByte(raidPtr, sector - fsuoff[0]);
                         else {                          else {
                                 RF_Malloc(dest[0], bytesPerSector, (char *));                                  RF_Malloc(dest[0], bytesPerSector, (char *));
                                 bzero(dest[0], bytesPerSector);                                  memset(dest[0], 0, bytesPerSector);
                                 mallc_one = 1;                                  mallc_one = 1;
                         }                          }
                         if (fsuoff[1] <= sector && sector < fsuend[1])                          if (fsuoff[1] <= sector && sector < fsuend[1])
                                 dest[1] = ((RF_PhysDiskAddr_t *) node->results[1])->bufPtr + rf_RaidAddressToByte(raidPtr, sector - fsuoff[1]);                                  dest[1] = ((RF_PhysDiskAddr_t *) node->results[1])->bufPtr + rf_RaidAddressToByte(raidPtr, sector - fsuoff[1]);
                         else {                          else {
                                 RF_Malloc(dest[1], bytesPerSector, (char *));                                  RF_Malloc(dest[1], bytesPerSector, (char *));
                                 bzero(dest[1], bytesPerSector);                                  memset(dest[1], 0, bytesPerSector);
                                 mallc_two = 1;                                  mallc_two = 1;
                         }                          }
                         RF_ASSERT(mallc_one == 0 || mallc_two == 0);                          RF_ASSERT(mallc_one == 0 || mallc_two == 0);
Line 917  rf_EOWriteDoubleRecoveryFunc(node)
Line 918  rf_EOWriteDoubleRecoveryFunc(node)
         RF_Malloc(olddata[1], numbytes, (char *));          RF_Malloc(olddata[1], numbytes, (char *));
         dest[0] = olddata[0];          dest[0] = olddata[0];
         dest[1] = olddata[1];          dest[1] = olddata[1];
         bzero(olddata[0], numbytes);          memset(olddata[0], 0, numbytes);
         bzero(olddata[1], numbytes);          memset(olddata[1], 0, numbytes);
         /* Begin the recovery decoding, initially buf[j],  ebuf, pbuf, dest[j]          /* Begin the recovery decoding, initially buf[j],  ebuf, pbuf, dest[j]
          * have already pointed at the beginning of each source buffers and           * have already pointed at the beginning of each source buffers and
          * destination buffers */           * destination buffers */

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.7.2.1

CVSweb <webmaster@jp.NetBSD.org>