mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Ensure only unique bad blocks are saved in resume file. Fixes #381
This commit is contained in:
@@ -333,6 +333,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
timeSpeedStart = DateTime.UtcNow;
|
timeSpeedStart = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
end = DateTime.Now;
|
end = DateTime.Now;
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
mhddLog.Close();
|
mhddLog.Close();
|
||||||
@@ -555,6 +557,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
end = DateTime.Now;
|
end = DateTime.Now;
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
mhddLog.Close();
|
mhddLog.Close();
|
||||||
|
|||||||
@@ -671,6 +671,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
if(!failedCrossingLeadOut)
|
if(!failedCrossingLeadOut)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -404,6 +404,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
timeSpeedStart = DateTime.UtcNow;
|
timeSpeedStart = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
end = DateTime.UtcNow;
|
end = DateTime.UtcNow;
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
mhddLog.Close();
|
mhddLog.Close();
|
||||||
@@ -496,8 +498,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
if(dcMode6?.Pages != null)
|
if(dcMode6?.Pages != null)
|
||||||
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
||||||
modePage.Page == 0x01 &&
|
modePage.Page == 0x01 && modePage.Subpage == 0x00))
|
||||||
modePage.Subpage == 0x00))
|
|
||||||
currentModePage = modePage;
|
currentModePage = modePage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -251,6 +251,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
timeSpeedStart = DateTime.UtcNow;
|
timeSpeedStart = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
end = DateTime.UtcNow;
|
end = DateTime.UtcNow;
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
mhddLog.Close();
|
mhddLog.Close();
|
||||||
@@ -351,9 +353,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
if(dcMode10.HasValue)
|
if(dcMode10.HasValue)
|
||||||
foreach(Modes.ModePage modePage in dcMode10.Value.Pages.Where(modePage =>
|
foreach(Modes.ModePage modePage in dcMode10.Value.Pages.Where(modePage =>
|
||||||
modePage.Page ==
|
modePage.Page == 0x01 && modePage.Subpage == 0x00))
|
||||||
0x01 && modePage.
|
|
||||||
Subpage == 0x00))
|
|
||||||
currentModePage = modePage;
|
currentModePage = modePage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -363,8 +363,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
if(dcMode6.HasValue)
|
if(dcMode6.HasValue)
|
||||||
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
||||||
modePage.Page == 0x01 &&
|
modePage.Page == 0x01 && modePage.Subpage == 0x00))
|
||||||
modePage.Subpage == 0x00))
|
|
||||||
currentModePage = modePage;
|
currentModePage = modePage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -274,6 +274,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
timeSpeedStart = DateTime.UtcNow;
|
timeSpeedStart = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
end = DateTime.UtcNow;
|
end = DateTime.UtcNow;
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
mhddLog.Close();
|
mhddLog.Close();
|
||||||
@@ -368,8 +370,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
if(dcMode6.HasValue)
|
if(dcMode6.HasValue)
|
||||||
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
||||||
modePage.Page == 0x01 &&
|
modePage.Page == 0x01 && modePage.Subpage == 0x00))
|
||||||
modePage.Subpage == 0x00))
|
|
||||||
currentModePage = modePage;
|
currentModePage = modePage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1019,8 +1019,9 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
timeSpeedStart = DateTime.UtcNow;
|
timeSpeedStart = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
blocks = currentBlock + 1;
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
end = DateTime.UtcNow;
|
blocks = currentBlock + 1;
|
||||||
|
end = DateTime.UtcNow;
|
||||||
|
|
||||||
// If not aborted this is added at the end of medium
|
// If not aborted this is added at the end of medium
|
||||||
if(_aborted)
|
if(_aborted)
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
// ****************************************************************************/
|
// ****************************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using Aaru.CommonTypes.Extents;
|
using Aaru.CommonTypes.Extents;
|
||||||
using Aaru.Core.Logging;
|
using Aaru.Core.Logging;
|
||||||
using Schemas;
|
using Schemas;
|
||||||
@@ -93,6 +94,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
if(_dev.Manufacturer.ToLowerInvariant() == "insite")
|
if(_dev.Manufacturer.ToLowerInvariant() == "insite")
|
||||||
{
|
{
|
||||||
_resume.BadBlocks.Add(i);
|
_resume.BadBlocks.Add(i);
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
_resume.NextBlock++;
|
_resume.NextBlock++;
|
||||||
_aborted = true;
|
_aborted = true;
|
||||||
|
|
||||||
@@ -141,6 +143,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
timeSpeedStart = DateTime.UtcNow;
|
timeSpeedStart = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using Aaru.CommonTypes.Extents;
|
using Aaru.CommonTypes.Extents;
|
||||||
using Aaru.Console;
|
using Aaru.Console;
|
||||||
using Aaru.Core.Logging;
|
using Aaru.Core.Logging;
|
||||||
@@ -240,6 +241,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -409,6 +409,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
timeSpeedStart = DateTime.UtcNow;
|
timeSpeedStart = DateTime.UtcNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
end = DateTime.Now;
|
end = DateTime.Now;
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
mhddLog.Close();
|
mhddLog.Close();
|
||||||
|
|||||||
@@ -686,6 +686,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
currentSector = extentEnd + 1;
|
currentSector = extentEnd + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||||
|
|
||||||
EndProgress?.Invoke();
|
EndProgress?.Invoke();
|
||||||
|
|
||||||
// Middle Zone D
|
// Middle Zone D
|
||||||
@@ -976,8 +978,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
Modes.DecodeMode10(readBuffer, PeripheralDeviceTypes.MultiMediaDevice);
|
Modes.DecodeMode10(readBuffer, PeripheralDeviceTypes.MultiMediaDevice);
|
||||||
|
|
||||||
if(dcMode10.HasValue)
|
if(dcMode10.HasValue)
|
||||||
foreach(var modePage in dcMode10.Value.Pages.Where(modePage => modePage.Page == 0x01 &&
|
foreach(Modes.ModePage modePage in dcMode10.Value.Pages.Where(modePage =>
|
||||||
modePage.Subpage == 0x00))
|
modePage.Page == 0x01 && modePage.Subpage == 0x00))
|
||||||
currentModePage = modePage;
|
currentModePage = modePage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -988,8 +990,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
if(dcMode6.HasValue)
|
if(dcMode6.HasValue)
|
||||||
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
foreach(Modes.ModePage modePage in dcMode6.Value.Pages.Where(modePage =>
|
||||||
modePage.Page == 0x01 &&
|
modePage.Page == 0x01 && modePage.Subpage == 0x00))
|
||||||
modePage.Subpage == 0x00))
|
|
||||||
currentModePage = modePage;
|
currentModePage = modePage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user