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;
|
||||
}
|
||||
|
||||
_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();
|
||||
|
||||
@@ -671,6 +671,8 @@ namespace Aaru.Core.Devices.Dumping
|
||||
|
||||
EndProgress?.Invoke();
|
||||
|
||||
_resume.BadBlocks = _resume.BadBlocks.Distinct().ToList();
|
||||
|
||||
if(!failedCrossingLeadOut)
|
||||
return;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user