diff --git a/Cargo.lock b/Cargo.lock index ca2a2e519c..d01cc0cc15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -463,9 +463,9 @@ dependencies = [ [[package]] name = "bhyve_api" version = "0.0.0" -source = "git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12#27e2789d381c0fcc237fbe30cec2ec66bd750c12" +source = "git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76#6d7ed9a033babc054db9eff5b59dee978d2b0d76" dependencies = [ - "bhyve_api_sys 0.0.0 (git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12)", + "bhyve_api_sys 0.0.0 (git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76)", "libc", "strum", ] @@ -483,7 +483,7 @@ dependencies = [ [[package]] name = "bhyve_api_sys" version = "0.0.0" -source = "git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12#27e2789d381c0fcc237fbe30cec2ec66bd750c12" +source = "git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76#6d7ed9a033babc054db9eff5b59dee978d2b0d76" dependencies = [ "libc", "strum", @@ -1383,7 +1383,7 @@ dependencies = [ [[package]] name = "crucible-agent-client" version = "0.0.1" -source = "git+https://github.com/oxidecomputer/crucible?rev=62cc2cfe64ca09c6876be7633355026fa65c8545#62cc2cfe64ca09c6876be7633355026fa65c8545" +source = "git+https://github.com/oxidecomputer/crucible?rev=8c6d485110ecfae5409575246b986a145c386dc4#8c6d485110ecfae5409575246b986a145c386dc4" dependencies = [ "anyhow", "chrono", @@ -1399,7 +1399,7 @@ dependencies = [ [[package]] name = "crucible-pantry-client" version = "0.0.1" -source = "git+https://github.com/oxidecomputer/crucible?rev=62cc2cfe64ca09c6876be7633355026fa65c8545#62cc2cfe64ca09c6876be7633355026fa65c8545" +source = "git+https://github.com/oxidecomputer/crucible?rev=8c6d485110ecfae5409575246b986a145c386dc4#8c6d485110ecfae5409575246b986a145c386dc4" dependencies = [ "anyhow", "chrono", @@ -1416,7 +1416,7 @@ dependencies = [ [[package]] name = "crucible-smf" version = "0.0.0" -source = "git+https://github.com/oxidecomputer/crucible?rev=62cc2cfe64ca09c6876be7633355026fa65c8545#62cc2cfe64ca09c6876be7633355026fa65c8545" +source = "git+https://github.com/oxidecomputer/crucible?rev=8c6d485110ecfae5409575246b986a145c386dc4#8c6d485110ecfae5409575246b986a145c386dc4" dependencies = [ "crucible-workspace-hack", "libc", @@ -3490,7 +3490,7 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", - "bhyve_api 0.0.0 (git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12)", + "bhyve_api 0.0.0 (git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76)", "byteorder", "camino", "camino-tempfile", @@ -5436,7 +5436,7 @@ dependencies = [ "pq-sys", "pretty_assertions", "progenitor-client", - "propolis-client 0.1.0 (git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12)", + "propolis-client 0.1.0 (git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76)", "rand 0.8.5", "rcgen", "ref-cast", @@ -5682,7 +5682,7 @@ dependencies = [ "oximeter-instruments", "oximeter-producer", "pretty_assertions", - "propolis-client 0.1.0 (git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12)", + "propolis-client 0.1.0 (git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76)", "propolis-mock-server", "rand 0.8.5", "rcgen", @@ -7106,7 +7106,7 @@ dependencies = [ [[package]] name = "propolis-client" version = "0.1.0" -source = "git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12#27e2789d381c0fcc237fbe30cec2ec66bd750c12" +source = "git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76#6d7ed9a033babc054db9eff5b59dee978d2b0d76" dependencies = [ "async-trait", "base64 0.21.7", @@ -7148,7 +7148,7 @@ dependencies = [ [[package]] name = "propolis-mock-server" version = "0.0.0" -source = "git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12#27e2789d381c0fcc237fbe30cec2ec66bd750c12" +source = "git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76#6d7ed9a033babc054db9eff5b59dee978d2b0d76" dependencies = [ "anyhow", "atty", @@ -7158,7 +7158,7 @@ dependencies = [ "futures", "hyper 0.14.28", "progenitor", - "propolis_types 0.0.0 (git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12)", + "propolis_types 0.0.0 (git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76)", "rand 0.8.5", "reqwest", "schemars", @@ -7190,7 +7190,7 @@ dependencies = [ [[package]] name = "propolis_types" version = "0.0.0" -source = "git+https://github.com/oxidecomputer/propolis?rev=27e2789d381c0fcc237fbe30cec2ec66bd750c12#27e2789d381c0fcc237fbe30cec2ec66bd750c12" +source = "git+https://github.com/oxidecomputer/propolis?rev=6d7ed9a033babc054db9eff5b59dee978d2b0d76#6d7ed9a033babc054db9eff5b59dee978d2b0d76" dependencies = [ "schemars", "serde", diff --git a/Cargo.toml b/Cargo.toml index ceac9801bb..29e2a8cbd0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -240,9 +240,9 @@ cookie = "0.18" criterion = { version = "0.5.1", features = [ "async_tokio" ] } crossbeam = "0.8" crossterm = { version = "0.27.0", features = ["event-stream"] } -crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "62cc2cfe64ca09c6876be7633355026fa65c8545" } -crucible-pantry-client = { git = "https://github.com/oxidecomputer/crucible", rev = "62cc2cfe64ca09c6876be7633355026fa65c8545" } -crucible-smf = { git = "https://github.com/oxidecomputer/crucible", rev = "62cc2cfe64ca09c6876be7633355026fa65c8545" } +crucible-agent-client = { git = "https://github.com/oxidecomputer/crucible", rev = "8c6d485110ecfae5409575246b986a145c386dc4" } +crucible-pantry-client = { git = "https://github.com/oxidecomputer/crucible", rev = "8c6d485110ecfae5409575246b986a145c386dc4" } +crucible-smf = { git = "https://github.com/oxidecomputer/crucible", rev = "8c6d485110ecfae5409575246b986a145c386dc4" } csv = "1.3.0" curve25519-dalek = "4" datatest-stable = "0.2.9" @@ -381,9 +381,9 @@ prettyplease = { version = "0.2.20", features = ["verbatim"] } proc-macro2 = "1.0" progenitor = { git = "https://github.com/oxidecomputer/progenitor", branch = "main" } progenitor-client = { git = "https://github.com/oxidecomputer/progenitor", branch = "main" } -bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "27e2789d381c0fcc237fbe30cec2ec66bd750c12" } -propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "27e2789d381c0fcc237fbe30cec2ec66bd750c12" } -propolis-mock-server = { git = "https://github.com/oxidecomputer/propolis", rev = "27e2789d381c0fcc237fbe30cec2ec66bd750c12" } +bhyve_api = { git = "https://github.com/oxidecomputer/propolis", rev = "6d7ed9a033babc054db9eff5b59dee978d2b0d76" } +propolis-client = { git = "https://github.com/oxidecomputer/propolis", rev = "6d7ed9a033babc054db9eff5b59dee978d2b0d76" } +propolis-mock-server = { git = "https://github.com/oxidecomputer/propolis", rev = "6d7ed9a033babc054db9eff5b59dee978d2b0d76" } proptest = "1.4.0" quote = "1.0" rand = "0.8.5" diff --git a/nexus/src/app/sagas/common_storage.rs b/nexus/src/app/sagas/common_storage.rs index 0fe14f6d2a..611fcc3258 100644 --- a/nexus/src/app/sagas/common_storage.rs +++ b/nexus/src/app/sagas/common_storage.rs @@ -37,10 +37,14 @@ pub(crate) async fn ensure_region_in_dataset( ) -> Result { let url = format!("http://{}", dataset.address()); let client = CrucibleAgentClient::new(&url); - + let Ok(extent_count) = u32::try_from(region.extent_count()) else { + return Err(Error::internal_error( + "Extent count out of range for a u32", + )); + }; let region_request = CreateRegion { block_size: region.block_size().to_bytes(), - extent_count: region.extent_count(), + extent_count, extent_size: region.blocks_per_extent(), // TODO: Can we avoid casting from UUID to string? // NOTE: This'll require updating the crucible agent client. diff --git a/nexus/src/app/sagas/disk_create.rs b/nexus/src/app/sagas/disk_create.rs index 5c4f5bf1ee..5e1d386ed1 100644 --- a/nexus/src/app/sagas/disk_create.rs +++ b/nexus/src/app/sagas/disk_create.rs @@ -485,7 +485,7 @@ async fn sdc_regions_ensure( sub_volumes: vec![VolumeConstructionRequest::Region { block_size, blocks_per_extent, - extent_count: extent_count.try_into().unwrap(), + extent_count, gen: 1, opts: CrucibleOpts { id: disk_id, diff --git a/nexus/src/app/sagas/snapshot_create.rs b/nexus/src/app/sagas/snapshot_create.rs index 53e06e310d..2a5deeff51 100644 --- a/nexus/src/app/sagas/snapshot_create.rs +++ b/nexus/src/app/sagas/snapshot_create.rs @@ -400,7 +400,7 @@ async fn ssc_regions_ensure( sub_volumes: vec![VolumeConstructionRequest::Region { block_size, blocks_per_extent, - extent_count: extent_count.try_into().unwrap(), + extent_count, gen: 1, opts: CrucibleOpts { id: destination_volume_id, diff --git a/package-manifest.toml b/package-manifest.toml index af0d4675e2..2bfc51d533 100644 --- a/package-manifest.toml +++ b/package-manifest.toml @@ -490,10 +490,10 @@ only_for_targets.image = "standard" # 3. Use source.type = "manual" instead of "prebuilt" source.type = "prebuilt" source.repo = "crucible" -source.commit = "62cc2cfe64ca09c6876be7633355026fa65c8545" +source.commit = "8c6d485110ecfae5409575246b986a145c386dc4" # The SHA256 digest is automatically posted to: # https://buildomat.eng.oxide.computer/public/file/oxidecomputer/crucible/image//crucible.sha256.txt -source.sha256 = "5b9e3ce16c8b3558e2ce20567165268088bd1b40a518636daf658eee28dd5843" +source.sha256 = "a974c976babbbbe4d126fe324e28093b4f69b689e1cf607ce38323befcfa494e" output.type = "zone" output.intermediate_only = true @@ -502,10 +502,10 @@ service_name = "crucible_pantry_prebuilt" only_for_targets.image = "standard" source.type = "prebuilt" source.repo = "crucible" -source.commit = "62cc2cfe64ca09c6876be7633355026fa65c8545" +source.commit = "8c6d485110ecfae5409575246b986a145c386dc4" # The SHA256 digest is automatically posted to: # https://buildomat.eng.oxide.computer/public/file/oxidecomputer/crucible/image//crucible-pantry.sha256.txt -source.sha256 = "4aaff4a683d44f7c4d52a102a6c0592ff6135e5255f3a3317b1a38b962abd745" +source.sha256 = "34418c60ecccade796e604997a11b1fa7f01c364996fa4b57131466e910700a8" output.type = "zone" output.intermediate_only = true @@ -517,10 +517,10 @@ service_name = "propolis-server" only_for_targets.image = "standard" source.type = "prebuilt" source.repo = "propolis" -source.commit = "0b71410d3a12045d34fa1c6c1d9ba1d8dd652564" +source.commit = "6d7ed9a033babc054db9eff5b59dee978d2b0d76" # The SHA256 digest is automatically posted to: # https://buildomat.eng.oxide.computer/public/file/oxidecomputer/propolis/image//propolis-server.sha256.txt -source.sha256 = "b6494d26886f196c2d1f70633c8745f278e2413357cf38d1e6f473a22191c802" +source.sha256 = "f8f41b47bc00811fefe2ba75e0f6f8ab77765776c04021e0b31f09c3b21108a9" output.type = "zone" [package.mg-ddm-gz]