rustfs/rustfs · error · StorageError::FaultyDisk

0x02

0x02

Error message

Faulty disk

What it means

StorageError variant in the top-level storage error enum marking a local drive as unhealthy: the drive repeatedly failed I/O, timed out, or failed health checks and is excluded from read/write quorum calculations until it recovers. It is the StorageError-level mirror of DiskError::FaultyDisk and typically leads to healing being scheduled for objects on that drive.

Source

Thrown at crates/ecstore/src/error/mod.rs:40

pub type Error = StorageError;
pub type Result<T> = core::result::Result<T, Error>;

/// Keeps high-cardinality diagnostic detail in the error source while making
/// the rendered `io::Error` stable for quorum aggregation.
#[derive(Debug)]
struct StableIoContextError {
    message: &'static str,
    source: Box<dyn std::error::Error + Send + Sync>,
}

impl std::fmt::Display for StableIoContextError {
    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        formatter.write_str(self.message)
    }
}

impl std::error::Error for StableIoContextError {
    fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
        Some(self.source.as_ref())
    }
}

pub(crate) fn stable_io_error<E>(message: &'static str, source: E) -> std::io::Error
where
    E: Into<Box<dyn std::error::Error + Send + Sync>>,
{
    std::io::Error::other(StableIoContextError {
        message,
        source: source.into(),
    })
}

/// Storage layer error type covering disk, volume, bucket, object, multipart,
/// erasure-coding, and operational error conditions.
///

View on GitHub (pinned to 5dca076efe)

Solutions

  1. Check drive health (SMART) and replace failing hardware
  2. Verify cabling/controller issues if the disk is intermittently failing
  3. After replacing the drive, re-format and let healing rebuild data
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/ecstore/src/error/mod.rs:40 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rustfs/rustfs@5dca076efe (2026-08-20). Data as JSON: /api/errors/c0173f440c01c5e9. Report an issue: GitHub.