forked from localhorst/reHDD
separate shred and check process
This commit is contained in:
@ -177,7 +177,11 @@ int Shred::shredDrive(Drive* drive, int* ipSignalFd)
|
||||
|
||||
tfng_prng_seedkey(NULL); //reset random generator
|
||||
|
||||
#ifdef ZERO_CHECK_ALERT
|
||||
drive->bWasShredded = true;
|
||||
Logger::logThis()->info("Shred-Task finished - Drive: " + drive->getModelName() + "-" + drive->getSerial() + " @" + address.str());
|
||||
#ifdef ZERO_CHECK
|
||||
drive->state=Drive::CHECK_ACTIVE;
|
||||
Logger::logThis()->info("Check-Task started - Drive: " + drive->getModelName() + "-" + drive->getSerial() + " @" + address.str());
|
||||
drive->u32DriveChecksumAferShredding = uiCalcChecksum(driveFileDiscr, drive, ipSignalFd);
|
||||
#ifdef LOG_LEVEL_HIGH
|
||||
if (drive->u32DriveChecksumAferShredding != 0)
|
||||
@ -194,12 +198,11 @@ int Shred::shredDrive(Drive* drive, int* ipSignalFd)
|
||||
|
||||
cleanup();
|
||||
|
||||
if(drive->state == Drive::SHRED_ACTIVE)
|
||||
if((drive->state == Drive::SHRED_ACTIVE) || (drive->state == Drive::CHECK_ACTIVE))
|
||||
{
|
||||
drive->bWasShredded = true;
|
||||
drive->state= Drive::NONE;
|
||||
drive->setTaskPercentage(0.0);
|
||||
Logger::logThis()->info("Finished shred for: " + drive->getModelName() + "-" + drive->getSerial());
|
||||
Logger::logThis()->info("Finished shred/check for: " + drive->getModelName() + "-" + drive->getSerial());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -213,7 +216,7 @@ double Shred::calcProgress()
|
||||
{
|
||||
unsigned int uiMaxShredIteration = SHRED_ITERATIONS;
|
||||
|
||||
#ifdef ZERO_CHECK_ALERT
|
||||
#ifdef ZERO_CHECK
|
||||
uiMaxShredIteration++; //increment because we will check after SHRED_ITERATIONS the drive for non-zero bytes
|
||||
#endif
|
||||
return (double) (((double) ulDriveByteOverallCount) / ((double)this->ulDriveByteSize*uiMaxShredIteration))*100.0f;
|
||||
@ -271,16 +274,22 @@ unsigned int Shred::uiCalcChecksum(fileDescriptor file,Drive* drive, int* ipSign
|
||||
ulDriveByteOverallCount += iReadBytes;
|
||||
d32Percent = this->calcProgress();
|
||||
drive->sShredSpeed.ulSpeedMetricBytesWritten += iReadBytes;
|
||||
|
||||
#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.01)
|
||||
|
||||
if(((d32Percent-d32TmpPercent) >= 0.01) || (d32Percent == 100.0))
|
||||
{
|
||||
drive->setTaskPercentage(d32TmpPercent);
|
||||
d32TmpPercent = d32Percent;
|
||||
#ifdef LOG_LEVEL_HIGH
|
||||
Logger::logThis()->info("send progress signal to main loop (check)");
|
||||
#endif
|
||||
write(*ipSignalFd, "A",1);
|
||||
}
|
||||
}
|
||||
drive->bWasChecked = true;
|
||||
return uiChecksum;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user