Skip to content

Commit d590fff

Browse files
committed
Port and simplify raw-file-v2
1 parent 07cb9ed commit d590fff

File tree

8 files changed

+1100
-5
lines changed

8 files changed

+1100
-5
lines changed

Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ tracing-subscriber = "0.3.18"
110110
twox-hash = "1.6.3"
111111
usdt = "0.5.0"
112112
uuid = { version = "1", features = [ "serde", "v4" ] }
113+
zerocopy = "0.7.32"
113114

114115
# git
115116
dropshot = { git = "https://github.com/oxidecomputer/dropshot", branch = "main", features = [ "usdt-probes" ] }

downstairs/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ tracing-subscriber.workspace = true
5454
tracing.workspace = true
5555
usdt.workspace = true
5656
uuid.workspace = true
57+
zerocopy.workspace = true
5758
crucible-workspace-hack.workspace = true
5859

5960
[dev-dependencies]

downstairs/src/extent.rs

+10
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ pub const EXTENT_META_SQLITE: u32 = 1;
141141
///
142142
/// See [`extent_inner_raw::RawInner`] for the implementation.
143143
pub const EXTENT_META_RAW: u32 = 2;
144+
pub const EXTENT_META_RAW_V2: u32 = 3;
144145

145146
impl ExtentMeta {
146147
pub fn new(ext_version: u32) -> ExtentMeta {
@@ -445,6 +446,11 @@ impl Extent {
445446
dir, def, number, read_only, log,
446447
)?)
447448
}
449+
EXTENT_META_RAW_V2 => {
450+
Box::new(extent_inner_raw_v2::RawInnerV2::open(
451+
dir, def, number, read_only, log,
452+
)?)
453+
}
448454
i => {
449455
return Err(CrucibleError::IoError(format!(
450456
"raw extent {number} has unknown tag {i}"
@@ -507,9 +513,13 @@ impl Extent {
507513
remove_copy_cleanup_dir(dir, number)?;
508514

509515
let inner: Box<dyn ExtentInner + Send + Sync> = match backend {
516+
#[cfg(any(test, feature = "integration-tests"))]
510517
Backend::RawFile => {
511518
Box::new(extent_inner_raw::RawInner::create(dir, def, number)?)
512519
}
520+
Backend::RawFileV2 => Box::new(
521+
extent_inner_raw_v2::RawInnerV2::create(dir, def, number)?,
522+
),
513523
#[cfg(any(test, feature = "integration-tests"))]
514524
Backend::SQLite => Box::new(
515525
extent_inner_sqlite::SqliteInner::create(dir, def, number)?,

0 commit comments

Comments
 (0)