From 8c168d928f74678edf306bfd26ae642d6e946d01 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 3 Feb 2026 22:17:35 +0100 Subject: [PATCH] block: qcow: Add SyncingHeader error variant for fsync operations Replace generic WritingHeader error with specific SyncingHeader error for header fsync operations. This provides more precise error reporting when syncing QCOW2 header changes to disk fails. Signed-off-by: Anatol Belski --- block/src/qcow/mod.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/block/src/qcow/mod.rs b/block/src/qcow/mod.rs index 5300b56e2..300cd8bc3 100644 --- a/block/src/qcow/mod.rs +++ b/block/src/qcow/mod.rs @@ -112,6 +112,8 @@ pub enum Error { SettingRefcountRefcount(#[source] io::Error), #[error("Size too small for number of clusters")] SizeTooSmallForNumberOfClusters, + #[error("Failed to sync header")] + SyncingHeader(#[source] io::Error), #[error("L1 entry table too large: {0}")] TooManyL1Entries(u64), #[error("Ref count table too large: {0}")] @@ -698,7 +700,7 @@ impl QcowHeader { self.incompatible_features &= !IncompatFeatures::DIRTY.bits(); } self.write_incompatible_features(file)?; - file.fsync().map_err(Error::WritingHeader)?; + file.fsync().map_err(Error::SyncingHeader)?; } Ok(()) } @@ -711,7 +713,7 @@ impl QcowHeader { if self.version == 3 { self.incompatible_features |= IncompatFeatures::CORRUPT.bits(); self.write_incompatible_features(file)?; - file.fsync().map_err(Error::WritingHeader)?; + file.fsync().map_err(Error::SyncingHeader)?; } Ok(()) } @@ -734,7 +736,7 @@ impl QcowHeader { file.seek(SeekFrom::Start(AUTOCLEAR_FEATURES_OFFSET)) .map_err(Error::WritingHeader)?; u64::write_be(file, 0).map_err(Error::WritingHeader)?; - file.fsync().map_err(Error::WritingHeader)?; + file.fsync().map_err(Error::SyncingHeader)?; } Ok(()) }