Skip to content

Commit dc53c12

Browse files
fix(rebuild): add same device validation
Signed-off-by: Tiago Castro <tiagolobocastro@gmail.com>
1 parent 37f211c commit dc53c12

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

io-engine/src/rebuild/rebuild_descriptor.rs

+6
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ impl RebuildDescriptor {
8686
bdev: dst_uri.to_string(),
8787
})?;
8888

89+
if src_descriptor.device_name() == dst_descriptor.device_name() {
90+
return Err(RebuildError::SameBdev {
91+
bdev: src_descriptor.device_name(),
92+
});
93+
}
94+
8995
let source_hdl = RebuildDescriptor::io_handle(&*src_descriptor).await?;
9096
let destination_hdl =
9197
RebuildDescriptor::io_handle(&*dst_descriptor).await?;

io-engine/src/rebuild/rebuild_error.rs

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ pub enum RebuildError {
1515
NoCopyBuffer { source: DmaError },
1616
#[snafu(display("Failed to validate rebuild job creation parameters"))]
1717
InvalidParameters {},
18+
#[snafu(display(
19+
"The same device was specified for both source and destination: {bdev}"
20+
))]
21+
SameBdev { bdev: String },
1822
#[snafu(display("Failed to get a handle for bdev {}", bdev))]
1923
NoBdevHandle { source: CoreError, bdev: String },
2024
#[snafu(display("Bdev {} not found", bdev))]

0 commit comments

Comments
 (0)