changed progress percentage calculation

This commit is contained in:
2022-05-14 15:21:14 +02:00
parent c8a3220c3a
commit 4fc44d9926
4 changed files with 29 additions and 16 deletions

View File

@ -120,14 +120,13 @@ int Shred::shredDrive(Drive* drive, int* ipSignalFd)
return -1;
}
ulDriveByteCounter += iByteShredded;
d32Percent = this->calcProgress(ulDriveByteCounter, (uiShredIterationCounter+1));
ulDriveByteOverallCount += iByteShredded;
d32Percent = this->calcProgress();
#ifdef LOG_LEVEL_HIGH
Logger::logThis()->info("Shred-Task: ByteCount: " + to_string(ulDriveByteCounter) + " - progress: " + to_string(d32Percent) + " - Drive: " + drive->getSerial());
Logger::logThis()->info("Shred-Task: ByteCount: " + to_string(ulDriveByteCounter) + " - iteration: " + to_string((uiShredIterationCounter+1)) + " - progress: " + to_string(d32Percent) + " - Drive: " + drive->getSerial());
#endif
if((d32Percent-d32TmpPercent) >= 0.09)
if((d32Percent-d32TmpPercent) >= 0.01)
{
drive->setTaskPercentage(d32TmpPercent);
d32TmpPercent = d32Percent;
@ -155,7 +154,7 @@ int Shred::shredDrive(Drive* drive, int* ipSignalFd)
} //end all shred iterations
#ifdef ZERO_CHECK_ALERT
drive->u32DriveChecksumAferShredding = uiCalcChecksum(driveFileDiscr);
drive->u32DriveChecksumAferShredding = uiCalcChecksum(driveFileDiscr, drive, ipSignalFd);
#ifdef LOG_LEVEL_HIGH
if (drive->u32DriveChecksumAferShredding != 0)
{
@ -176,7 +175,6 @@ int Shred::shredDrive(Drive* drive, int* ipSignalFd)
drive->setTaskPercentage(0.0);
Logger::logThis()->info("Finished shred for: " + drive->getModelName() + "-" + drive->getSerial());
}
return 0;
}
/**
@ -185,15 +183,14 @@ int Shred::shredDrive(Drive* drive, int* ipSignalFd)
* \param current shred iteration
* \return double percentage
*/
double Shred::calcProgress(unsigned long ulDriveByteIndex, unsigned int uiIteration)
double Shred::calcProgress()
{
unsigned int uiMaxShredIteration = SHRED_ITERATIONS;
#ifdef ZERO_CHECK_ALERT
uiMaxShredIteration++; //increment because we will check after SHRED_ITERATIONS the drive for non-zero bytes
#endif
return (double) (100.0f/((double)this->ulDriveByteSize)*((double) ulDriveByteIndex) / ((double) uiIteration / (double) uiMaxShredIteration) );
return (double) (((double) ulDriveByteOverallCount) / ((double)this->ulDriveByteSize*uiMaxShredIteration))*100.0f;
}
int Shred::iRewindDrive(fileDescriptor file)
@ -224,7 +221,7 @@ unsigned long Shred::getDriveSizeInBytes(fileDescriptor file)
return ulDriveSizeTmp;
}
unsigned int Shred::uiCalcChecksum(fileDescriptor file)
unsigned int Shred::uiCalcChecksum(fileDescriptor file,Drive* drive, int* ipSignalFd)
{
unsigned int uiChecksum = 0;
unsigned long ulDriveByteCounter = 0U;
@ -247,6 +244,21 @@ unsigned int Shred::uiCalcChecksum(fileDescriptor file)
uiChecksum += caChunk[iReadBytesCounter];
}
ulDriveByteCounter += iReadBytes;
ulDriveByteOverallCount += ulDriveByteCounter;
d32Percent = this->calcProgress();
#ifdef LOG_LEVEL_HIGH
Logger::logThis()->info("Shred-Task (Checksum): ByteCount: " + to_string(ulDriveByteCounter) + " - progress: " + to_string(d32Percent) + " - Drive: " + drive->getSerial());
#endif
if((d32Percent-d32TmpPercent) >= 0.09)
{
drive->setTaskPercentage(d32TmpPercent);
d32TmpPercent = d32Percent;
write(*ipSignalFd, "A",1);
}
}
return uiChecksum;
}

View File

@ -128,7 +128,7 @@ void TUI::updateTUI(list <Drive>* plistDrives, uint8_t u8SelectedEntry)
}
#ifdef ZERO_CHECK_ALERT
if(bSelectedEntry && it->bWasShredded && (it->u32DriveChecksumAferShredding != 42U))
if(bSelectedEntry && it->bWasShredded && (it->u32DriveChecksumAferShredding != 0U))
{
dialog=createZeroChecksumWarning(70, 16, ((u16StdscrX)-(int)(u16StdscrX/2)-20),(int)(u16StdscrY/2)-8, it->getPath(), it->getModelFamily(), it->getModelName(), it->getSerial(), it->u32DriveChecksumAferShredding);
wrefresh(dialog);