v0.13.41: debug logging for sector-0 regression

This commit is contained in:
MattJackson
2026-04-29 07:09:46 -07:00
parent 9ac0c2fcdf
commit 7de9d4d42c
4 changed files with 38 additions and 1 deletions
+7
View File
@@ -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
View File
@@ -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"
+14
View File
@@ -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,
+16
View File
@@ -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),