Skip to content

Commit b0691c2

Browse files
committed
RawFileV2 implementation
1 parent 97e2319 commit b0691c2

File tree

7 files changed

+1225
-3
lines changed

7 files changed

+1225
-3
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
@@ -109,6 +109,7 @@ tracing-subscriber = "0.3.18"
109109
twox-hash = "1.6.3"
110110
usdt = "0.5.0"
111111
uuid = { version = "1", features = [ "serde", "v4" ] }
112+
zerocopy = "0.7.32"
112113

113114
# git
114115
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-1
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ pub const EXTENT_META_SQLITE: u32 = 1;
158158
///
159159
/// See [`extent_inner_raw::RawInner`] for the implementation.
160160
pub const EXTENT_META_RAW: u32 = 2;
161+
pub const EXTENT_META_RAW_V2: u32 = 3;
161162

162163
impl ExtentMeta {
163164
pub fn new(ext_version: u32) -> ExtentMeta {
@@ -376,7 +377,7 @@ impl Extent {
376377
// haven't gotten to deleting the `.db` file).
377378
let mut has_sqlite = path.with_extension("db").exists();
378379
let force_sqlite_backend = match backend {
379-
Backend::RawFile => false,
380+
Backend::RawFile | Backend::RawFileV2 => false,
380381
#[cfg(any(test, feature = "integration-tests"))]
381382
Backend::SQLite => true,
382383
};
@@ -460,6 +461,11 @@ impl Extent {
460461
dir, def, number, read_only, log,
461462
)?)
462463
}
464+
EXTENT_META_RAW_V2 => {
465+
Box::new(extent_inner_raw_v2::RawInnerV2::open(
466+
dir, def, number, read_only, log,
467+
)?)
468+
}
463469
i => {
464470
return Err(CrucibleError::IoError(format!(
465471
"raw extent {number} has unknown tag {i}"
@@ -528,6 +534,9 @@ impl Extent {
528534
Backend::RawFile => {
529535
Box::new(extent_inner_raw::RawInner::create(dir, def, number)?)
530536
}
537+
Backend::RawFileV2 => Box::new(
538+
extent_inner_raw_v2::RawInnerV2::create(dir, def, number)?,
539+
),
531540
#[cfg(any(test, feature = "integration-tests"))]
532541
Backend::SQLite => Box::new(
533542
extent_inner_sqlite::SqliteInner::create(dir, def, number)?,

0 commit comments

Comments
 (0)