Ensure only unique bad blocks are saved in resume file. Fixes #381

This commit is contained in:
2020-11-03 01:40:10 +00:00
parent 73faa18421
commit 49dda86cd8
10 changed files with 33 additions and 15 deletions

View File

@@ -333,6 +333,8 @@ namespace Aaru.Core.Devices.Dumping
timeSpeedStart = DateTime.UtcNow;
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
end = DateTime.Now;
EndProgress?.Invoke();
mhddLog.Close();
@@ -555,6 +557,8 @@ namespace Aaru.Core.Devices.Dumping
}
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
end = DateTime.Now;
EndProgress?.Invoke();
mhddLog.Close();

View File

@@ -671,6 +671,8 @@ namespace Aaru.Core.Devices.Dumping
EndProgress?.Invoke();
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
if(!failedCrossingLeadOut)
return;

View File

@@ -404,6 +404,8 @@ namespace Aaru.Core.Devices.Dumping
timeSpeedStart = DateTime.UtcNow;
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
end = DateTime.UtcNow;
EndProgress?.Invoke();
mhddLog.Close();
@@ -496,8 +498,7 @@ namespace Aaru.Core.Devices.Dumping
if(dcMode6?.Pages != null)
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
modePage.Page == 0x01 &&
modePage.Subpage == 0x00))
modePage.Page == 0x01 && modePage.Subpage == 0x00))
currentModePage = modePage;
}

View File

@@ -251,6 +251,8 @@ namespace Aaru.Core.Devices.Dumping
timeSpeedStart = DateTime.UtcNow;
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
end = DateTime.UtcNow;
EndProgress?.Invoke();
mhddLog.Close();
@@ -351,9 +353,7 @@ namespace Aaru.Core.Devices.Dumping
if(dcMode10.HasValue)
foreach(Modes.ModePage modePage in dcMode10.Value.Pages.Where(modePage =>
modePage.Page ==
0x01 && modePage.
Subpage == 0x00))
modePage.Page == 0x01 && modePage.Subpage == 0x00))
currentModePage = modePage;
}
}
@@ -363,8 +363,7 @@ namespace Aaru.Core.Devices.Dumping
if(dcMode6.HasValue)
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
modePage.Page == 0x01 &&
modePage.Subpage == 0x00))
modePage.Page == 0x01 && modePage.Subpage == 0x00))
currentModePage = modePage;
}

View File

@@ -274,6 +274,8 @@ namespace Aaru.Core.Devices.Dumping
timeSpeedStart = DateTime.UtcNow;
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
end = DateTime.UtcNow;
EndProgress?.Invoke();
mhddLog.Close();
@@ -368,8 +370,7 @@ namespace Aaru.Core.Devices.Dumping
if(dcMode6.HasValue)
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
modePage.Page == 0x01 &&
modePage.Subpage == 0x00))
modePage.Page == 0x01 && modePage.Subpage == 0x00))
currentModePage = modePage;
}

View File

@@ -1019,8 +1019,9 @@ namespace Aaru.Core.Devices.Dumping
timeSpeedStart = DateTime.UtcNow;
}
blocks = currentBlock + 1;
end = DateTime.UtcNow;
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
blocks = currentBlock + 1;
end = DateTime.UtcNow;
// If not aborted this is added at the end of medium
if(_aborted)

View File

@@ -25,6 +25,7 @@
// ****************************************************************************/
using System;
using System.Linq;
using Aaru.CommonTypes.Extents;
using Aaru.Core.Logging;
using Schemas;
@@ -93,6 +94,7 @@ namespace Aaru.Core.Devices.Dumping
if(_dev.Manufacturer.ToLowerInvariant() == "insite")
{
_resume.BadBlocks.Add(i);
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
_resume.NextBlock++;
_aborted = true;
@@ -141,6 +143,8 @@ namespace Aaru.Core.Devices.Dumping
timeSpeedStart = DateTime.UtcNow;
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
EndProgress?.Invoke();
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Linq;
using Aaru.CommonTypes.Extents;
using Aaru.Console;
using Aaru.Core.Logging;
@@ -240,6 +241,8 @@ namespace Aaru.Core.Devices.Dumping
}
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
EndProgress?.Invoke();
}
}

View File

@@ -409,6 +409,8 @@ namespace Aaru.Core.Devices.Dumping
timeSpeedStart = DateTime.UtcNow;
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
end = DateTime.Now;
EndProgress?.Invoke();
mhddLog.Close();

View File

@@ -686,6 +686,8 @@ namespace Aaru.Core.Devices.Dumping
currentSector = extentEnd + 1;
}
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
EndProgress?.Invoke();
// Middle Zone D
@@ -976,8 +978,8 @@ namespace Aaru.Core.Devices.Dumping
Modes.DecodeMode10(readBuffer, PeripheralDeviceTypes.MultiMediaDevice);
if(dcMode10.HasValue)
foreach(var modePage in dcMode10.Value.Pages.Where(modePage => modePage.Page == 0x01 &&
modePage.Subpage == 0x00))
foreach(Modes.ModePage modePage in dcMode10.Value.Pages.Where(modePage =>
modePage.Page == 0x01 && modePage.Subpage == 0x00))
currentModePage = modePage;
}
}
@@ -988,8 +990,7 @@ namespace Aaru.Core.Devices.Dumping
if(dcMode6.HasValue)
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
modePage.Page == 0x01 &&
modePage.Subpage == 0x00))
modePage.Page == 0x01 && modePage.Subpage == 0x00))
currentModePage = modePage;
}