mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-28 07:57:01 +00:00
fix(ecstore): adjust unformatted disk error mapping (#1988)
This commit is contained in:
@@ -90,8 +90,6 @@ pub fn to_unformatted_disk_error(io_err: std::io::Error) -> std::io::Error {
|
|||||||
match io_err.kind() {
|
match io_err.kind() {
|
||||||
std::io::ErrorKind::NotFound => DiskError::UnformattedDisk.into(),
|
std::io::ErrorKind::NotFound => DiskError::UnformattedDisk.into(),
|
||||||
std::io::ErrorKind::PermissionDenied => DiskError::DiskAccessDenied.into(),
|
std::io::ErrorKind::PermissionDenied => DiskError::DiskAccessDenied.into(),
|
||||||
std::io::ErrorKind::UnexpectedEof => DiskError::UnformattedDisk.into(),
|
|
||||||
std::io::ErrorKind::InvalidData => DiskError::UnformattedDisk.into(),
|
|
||||||
std::io::ErrorKind::Other => match io_err.downcast::<DiskError>() {
|
std::io::ErrorKind::Other => match io_err.downcast::<DiskError>() {
|
||||||
Ok(err) => match err {
|
Ok(err) => match err {
|
||||||
DiskError::FileNotFound => DiskError::UnformattedDisk.into(),
|
DiskError::FileNotFound => DiskError::UnformattedDisk.into(),
|
||||||
@@ -99,11 +97,11 @@ pub fn to_unformatted_disk_error(io_err: std::io::Error) -> std::io::Error {
|
|||||||
DiskError::VolumeNotFound => DiskError::UnformattedDisk.into(),
|
DiskError::VolumeNotFound => DiskError::UnformattedDisk.into(),
|
||||||
DiskError::FileAccessDenied => DiskError::DiskAccessDenied.into(),
|
DiskError::FileAccessDenied => DiskError::DiskAccessDenied.into(),
|
||||||
DiskError::DiskAccessDenied => DiskError::DiskAccessDenied.into(),
|
DiskError::DiskAccessDenied => DiskError::DiskAccessDenied.into(),
|
||||||
_ => DiskError::UnformattedDisk.into(),
|
_ => DiskError::CorruptedBackend.into(),
|
||||||
},
|
},
|
||||||
Err(_err) => DiskError::UnformattedDisk.into(),
|
Err(_err) => DiskError::CorruptedBackend.into(),
|
||||||
},
|
},
|
||||||
_ => DiskError::UnformattedDisk.into(),
|
_ => DiskError::CorruptedBackend.into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -371,18 +369,18 @@ mod tests {
|
|||||||
let result = to_unformatted_disk_error(io_error);
|
let result = to_unformatted_disk_error(io_error);
|
||||||
assert!(contains_disk_error(result, DiskError::DiskAccessDenied));
|
assert!(contains_disk_error(result, DiskError::DiskAccessDenied));
|
||||||
|
|
||||||
// Test Other error kind with other DiskError -> UnformattedDisk
|
// Test Other error kind with other DiskError -> CorruptedBackend
|
||||||
let io_error = create_io_error_with_disk_error(DiskError::DiskFull);
|
let io_error = create_io_error_with_disk_error(DiskError::DiskFull);
|
||||||
let result = to_unformatted_disk_error(io_error);
|
let result = to_unformatted_disk_error(io_error);
|
||||||
assert!(contains_disk_error(result, DiskError::UnformattedDisk));
|
assert!(contains_disk_error(result, DiskError::CorruptedBackend));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_to_unformatted_disk_error_recursive_behavior() {
|
fn test_to_unformatted_disk_error_recursive_behavior() {
|
||||||
// Test with non-Other error kind that should be handled without infinite recursion
|
// Test with non-Other error kind that should be handled without infinite recursion
|
||||||
let result = to_unformatted_disk_error(create_io_error(ErrorKind::Interrupted));
|
let result = to_unformatted_disk_error(create_io_error(ErrorKind::Interrupted));
|
||||||
// This should not cause infinite recursion and should produce UnformattedDisk
|
// This should not cause infinite recursion and should produce CorruptedBackend
|
||||||
assert!(contains_disk_error(result, DiskError::UnformattedDisk));
|
assert!(contains_disk_error(result, DiskError::CorruptedBackend));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user