Skip to content

Commit 8c168d9

Browse files
weltlingrbradford
authored andcommitted
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 <anbelski@linux.microsoft.com>
1 parent 7667e8c commit 8c168d9

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

block/src/qcow/mod.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ pub enum Error {
112112
SettingRefcountRefcount(#[source] io::Error),
113113
#[error("Size too small for number of clusters")]
114114
SizeTooSmallForNumberOfClusters,
115+
#[error("Failed to sync header")]
116+
SyncingHeader(#[source] io::Error),
115117
#[error("L1 entry table too large: {0}")]
116118
TooManyL1Entries(u64),
117119
#[error("Ref count table too large: {0}")]
@@ -698,7 +700,7 @@ impl QcowHeader {
698700
self.incompatible_features &= !IncompatFeatures::DIRTY.bits();
699701
}
700702
self.write_incompatible_features(file)?;
701-
file.fsync().map_err(Error::WritingHeader)?;
703+
file.fsync().map_err(Error::SyncingHeader)?;
702704
}
703705
Ok(())
704706
}
@@ -711,7 +713,7 @@ impl QcowHeader {
711713
if self.version == 3 {
712714
self.incompatible_features |= IncompatFeatures::CORRUPT.bits();
713715
self.write_incompatible_features(file)?;
714-
file.fsync().map_err(Error::WritingHeader)?;
716+
file.fsync().map_err(Error::SyncingHeader)?;
715717
}
716718
Ok(())
717719
}
@@ -734,7 +736,7 @@ impl QcowHeader {
734736
file.seek(SeekFrom::Start(AUTOCLEAR_FEATURES_OFFSET))
735737
.map_err(Error::WritingHeader)?;
736738
u64::write_be(file, 0).map_err(Error::WritingHeader)?;
737-
file.fsync().map_err(Error::WritingHeader)?;
739+
file.fsync().map_err(Error::SyncingHeader)?;
738740
}
739741
Ok(())
740742
}

0 commit comments

Comments
 (0)