v0.13.35: pause 3s after first MEDIUM ERROR before retry to prevent USB bridge crash
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "libfreemkv"
|
name = "libfreemkv"
|
||||||
version = "0.13.34"
|
version = "0.13.35"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version = "1.86"
|
rust-version = "1.86"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
|
|||||||
+8
-2
@@ -1441,10 +1441,16 @@ impl Disc {
|
|||||||
if err.is_marginal_read()
|
if err.is_marginal_read()
|
||||||
|| err.scsi_sense().is_some_and(|s| s.is_medium_error())
|
|| err.scsi_sense().is_some_and(|s| s.is_medium_error())
|
||||||
{
|
{
|
||||||
// Disc-related error — try 1 sector instead
|
|
||||||
use_single = true;
|
use_single = true;
|
||||||
consecutive_good = 0;
|
consecutive_good = 0;
|
||||||
// Don't advance pos — retry this location at 1 sector
|
if err.scsi_sense().is_some_and(|s| s.is_medium_error())
|
||||||
|
&& opts
|
||||||
|
.halt
|
||||||
|
.as_ref()
|
||||||
|
.is_none_or(|h| !h.load(std::sync::atomic::Ordering::Relaxed))
|
||||||
|
{
|
||||||
|
std::thread::sleep(std::time::Duration::from_secs(3));
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
// Non-recoverable transport error — bail
|
// Non-recoverable transport error — bail
|
||||||
|
|||||||
Reference in New Issue
Block a user