Disable delete after shred was once started. (#69)

documented here: #65

Reviewed-on: #69
Co-authored-by: localhorst <localhorst@mosad.xyz>
Co-committed-by: localhorst <localhorst@mosad.xyz>
This commit is contained in:
Hendrik Schutter 2024-08-16 10:26:49 +02:00 committed by Hendrik Schutter
parent 6dd4c44688
commit 1055ef57ee
3 changed files with 12 additions and 5 deletions

View File

@ -34,6 +34,7 @@ public:
} sShredSpeed;
bool bWasShredded = false; // all shred iterations done
bool bWasShredStarted = false; // shred was atleast once started
bool bWasChecked = false; // all shred iterations and optional checking done
bool bWasDeleted = false;
bool bIsOffline = false;

View File

@ -32,11 +32,15 @@ void Delete::deleteDrive(Drive *drive)
const char *cpComand = sCMD.c_str();
// cout << "delete: " << cpComand << endl;
FILE *deleteCmdOutput = popen(cpComand, "r");
while ((getline(&cLine, &len, deleteCmdOutput)) != -1)
if (drive->bWasShredStarted == false)
{
// wipefs running
//only start delete if the drive was not shredded before
FILE *deleteCmdOutput = popen(cpComand, "r");
while ((getline(&cLine, &len, deleteCmdOutput)) != -1)
{
// wipefs running
}
pclose(deleteCmdOutput);
}
pclose(deleteCmdOutput);
}

View File

@ -36,6 +36,7 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd)
ostringstream address;
address << (void const *)&(*drive);
Logger::logThis()->info("Shred-Task started - Drive: " + drive->getModelName() + "-" + drive->getSerial() + " @" + address.str());
drive->bWasShredStarted = true; //Mark drive as partly shredded
#ifdef DRYRUN
for (int i = 0; i <= 500; i++)
@ -48,6 +49,7 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd)
write(*ipSignalFd, "A", 1);
usleep(20000);
}
drive->bWasShredded = true;
#endif
#ifndef DRYRUN