v0.13.41: debug logging for sector-0 regression
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.13.41 (2026-04-29)
|
||||||
|
|
||||||
|
### Debug logging for sector-0 regression diagnosis
|
||||||
|
|
||||||
|
- Add debug logging to Drive::read and Disc::copy first reads.
|
||||||
|
- No functional changes.
|
||||||
|
|
||||||
## 0.13.40 (2026-04-28)
|
## 0.13.40 (2026-04-28)
|
||||||
|
|
||||||
### Pass 1 pure ECC-block sweep, transport-failure abort, mapfile-based recovery
|
### Pass 1 pure ECC-block sweep, transport-failure abort, mapfile-based recovery
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "libfreemkv"
|
name = "libfreemkv"
|
||||||
version = "0.13.40"
|
version = "0.13.41"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version = "1.86"
|
rust-version = "1.86"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
|
|||||||
@@ -1338,6 +1338,20 @@ impl Disc {
|
|||||||
let block_count = (block_bytes / 2048) as u16;
|
let block_count = (block_bytes / 2048) as u16;
|
||||||
let recovery = !opts.skip_on_error;
|
let recovery = !opts.skip_on_error;
|
||||||
|
|
||||||
|
if read_ok_count + read_err_count < 3 {
|
||||||
|
tracing::info!(
|
||||||
|
target: "freemkv::disc",
|
||||||
|
block_lba,
|
||||||
|
block_count,
|
||||||
|
block_bytes,
|
||||||
|
recovery,
|
||||||
|
skip_on_error = opts.skip_on_error,
|
||||||
|
batch,
|
||||||
|
total_bytes,
|
||||||
|
"Disc::copy first reads"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let read_result = reader.read_sectors(
|
let read_result = reader.read_sectors(
|
||||||
block_lba,
|
block_lba,
|
||||||
block_count,
|
block_count,
|
||||||
|
|||||||
@@ -444,6 +444,14 @@ impl Drive {
|
|||||||
} else {
|
} else {
|
||||||
crate::scsi::READ_TIMEOUT_MS
|
crate::scsi::READ_TIMEOUT_MS
|
||||||
};
|
};
|
||||||
|
tracing::debug!(
|
||||||
|
target: "freemkv::drive",
|
||||||
|
lba,
|
||||||
|
count,
|
||||||
|
recovery,
|
||||||
|
timeout_ms,
|
||||||
|
"Drive::read enter"
|
||||||
|
);
|
||||||
let cdb = [
|
let cdb = [
|
||||||
crate::scsi::SCSI_READ_10,
|
crate::scsi::SCSI_READ_10,
|
||||||
0x00,
|
0x00,
|
||||||
@@ -467,6 +475,14 @@ impl Drive {
|
|||||||
Err(Error::Halted) => Err(Error::Halted),
|
Err(Error::Halted) => Err(Error::Halted),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
let (status, sense) = extract_scsi_context(&e);
|
let (status, sense) = extract_scsi_context(&e);
|
||||||
|
tracing::warn!(
|
||||||
|
target: "freemkv::drive",
|
||||||
|
lba,
|
||||||
|
count,
|
||||||
|
inner_error = %e,
|
||||||
|
scsi_status = status,
|
||||||
|
"Drive::read checked_exec failed"
|
||||||
|
);
|
||||||
Err(Error::DiscRead {
|
Err(Error::DiscRead {
|
||||||
sector: lba as u64,
|
sector: lba as u64,
|
||||||
status: Some(status),
|
status: Some(status),
|
||||||
|
|||||||
Reference in New Issue
Block a user