-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
switch to stable toolchain #916
Conversation
Omicron, does it need to compile propolis (and therefore Crucible) to build, or does it now use something different? Or I'm just remembering wrong and that was never required? |
I think we need to decide on macOS support at this point. If we want to support it, this issue is blocked by the stabilization of the At that point, there is still a good bit of work to get the |
@jmpesp Omicron requires the |
Personally, I'd be game to drop it. I'd like input from the folks that use it, of course!
I think there's a lot of value to be on "stable":
@bnaecker is it easy to inventory the work you're describing? If folks are on board, maybe we can spread it around. |
I'm also on board :)
Definitely! I got bit by the stabilization of
I think the work-list would roughly as follows. I'll update this if I think of more.
I'd of course welcome help, but as long as everyone's on board with dropping macOS support, then I'd be happy to just spend a day and churn through it. |
I'm fine with it, assuming it would be relatively easy to run Nexus + simulated Sled Agent in a Docker container or whatever for local dev. We do most console dev using a mock API server that runs in the browser, but we do definitely sometimes dev against real Nexus. |
I talked with @pfmooney after the huddle this morning. He's planning to update In addition, there'll be a feature flag called something like |
5b08611
to
c97ee82
Compare
I updated this PR to see how far we are. Right now the problem we run into is that illumos-sys-hdrs (from OPTE) uses the unstable |
It looks like opte has already been updated to avoid this without the "kernel" feature (which we don't seem to use in Omicron's build), but omicron is using a fairly old version of opte and related crates (git commit oxidecomputer/opte@23fdf). I'm not sure what's involved in updating it further. Maybe that's covered by #1904? |
opte has been updated so give this another shot and it should work! |
c97ee82
to
9c2ec75
Compare
@@ -788,7 +788,7 @@ async fn sp_component_active_slot_set( | |||
let component = component_from_str(&component)?; | |||
let slot = body.into_inner().slot; | |||
|
|||
sp.set_component_active_slot(component, slot) | |||
sp.set_component_active_slot(component, slot, false) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mkeeter and/or @jgallagher can you confirm that false
is what we want here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That does maintain the current behavior, yes. Probably we want to extend SpComponentFirmwareSlot
to add a boolean to pass here, but that can be done later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perfect; thank you
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
uhhhhh
false
means that we will not persistently select that boot slot. It is a policy question about what the sp_component_active_slot_set
should be doing, and I'm not sure of the answer.
When updating similar APIs, I've added a persist: bool
to the function signature, to force callers to make a choice about it; we may want to do the same to sp_component_active_slot_set
here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When updating similar APIs, I've added a persist: bool to the function signature, to force callers to make a choice about it; we may want to do the same to sp_component_active_slot_set here.
Yep, this is what I meant by extending SpComponentFirmwareSlot
, which is coming from MGS's client here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Github strikes again – I had the page open before you commented, so didn't see it until my comment was already submitted!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let's get that money
Crucible updates all Crucible connections should set TCP_NODELAY (#983) Use a fixed size for tag and nonce (#957) Log crucible opts on start, order crutest options (#974) Lock the Downstairs less (#966) Cache dirty flag locally, reducing SQLite operations (#970) Make stats mutex synchronous (#961) Optimize requeue during flow control conditions (#962) Update Rust crate base64 to 0.21.4 (#950) Do less in control (#949) Fix --flush-per-blocks (#959) Fast dependency checking (#916) Update actions/checkout action to v4 (#960) Use `cargo hakari` for better workspace deps (#956) Update actions/checkout digest to 8ade135 (#939) Cache block size in Guest (#947) Update Rust crate ringbuffer to 0.15.0 (#954) Update Rust crate toml to 0.8 (#955) Update Rust crate reedline to 0.24.0 (#953) Update Rust crate libc to 0.2.148 (#952) Update Rust crate indicatif to 0.17.7 (#951) Remove unused async (#943) Use a synchronous mutex for bw/iop_tokens (#946) Make flush ID non-locking (#945) Use `oneshot` channels instead of `mpsc` for notification (#918) Use a strong type for upstairs negotiation (#941) Add a "dynamometer" option to crucible-downstairs (#931) Get new work and active count in one lock (#938) A bunch of misc test cleanup stuff (#937) Wait for a snapshot to finish on all downstairs (#920) dsc and clippy cleanup. (#935) No need to sort ackable_work (#934) Use a strong type for repair ID (#928) Keep new jobs sorted (#929) Remove state_count function on Downstairs (#927) Small cleanup to IOStateCount (#932) let cmon and IOStateCount use ClientId (#930) Fast return for zero length IOs (#926) Use a strong type for client ID (#925) A few Crucible Agent fixes (#922) Use a newtype for `JobId` (#919) Don't pass MutexGuard into functions (#917) Crutest updates, rename tests, new options (#911) Propolis updates Update tungstenite crates to 0.20 Use `strum` crate for enum-related utilities Wire up bits for CPUID customization PHD: improve artifact store (#529) Revert abort-on-panic in 'dev' cargo profile
Crucible updates all Crucible connections should set TCP_NODELAY (#983) Use a fixed size for tag and nonce (#957) Log crucible opts on start, order crutest options (#974) Lock the Downstairs less (#966) Cache dirty flag locally, reducing SQLite operations (#970) Make stats mutex synchronous (#961) Optimize requeue during flow control conditions (#962) Update Rust crate base64 to 0.21.4 (#950) Do less in control (#949) Fix --flush-per-blocks (#959) Fast dependency checking (#916) Update actions/checkout action to v4 (#960) Use `cargo hakari` for better workspace deps (#956) Update actions/checkout digest to 8ade135 (#939) Cache block size in Guest (#947) Update Rust crate ringbuffer to 0.15.0 (#954) Update Rust crate toml to 0.8 (#955) Update Rust crate reedline to 0.24.0 (#953) Update Rust crate libc to 0.2.148 (#952) Update Rust crate indicatif to 0.17.7 (#951) Remove unused async (#943) Use a synchronous mutex for bw/iop_tokens (#946) Make flush ID non-locking (#945) Use `oneshot` channels instead of `mpsc` for notification (#918) Use a strong type for upstairs negotiation (#941) Add a "dynamometer" option to crucible-downstairs (#931) Get new work and active count in one lock (#938) A bunch of misc test cleanup stuff (#937) Wait for a snapshot to finish on all downstairs (#920) dsc and clippy cleanup. (#935) No need to sort ackable_work (#934) Use a strong type for repair ID (#928) Keep new jobs sorted (#929) Remove state_count function on Downstairs (#927) Small cleanup to IOStateCount (#932) let cmon and IOStateCount use ClientId (#930) Fast return for zero length IOs (#926) Use a strong type for client ID (#925) A few Crucible Agent fixes (#922) Use a newtype for `JobId` (#919) Don't pass MutexGuard into functions (#917) Crutest updates, rename tests, new options (#911) Propolis updates Update tungstenite crates to 0.20 Use `strum` crate for enum-related utilities Wire up bits for CPUID customization PHD: improve artifact store (#529) Revert abort-on-panic in 'dev' cargo profile --------- Co-authored-by: Alan Hanson <[email protected]>
This does not build yet. Known blockers:
#![feature(asm)]
#![feature(asm)]
Other changes in this PR:
cargo update -p dropshot --precise
. I suspect that's why we haven't seen dependabot updates to dropshot in a couple of weeks. (note: I'm doing this in normalize dropshot dependencies #917 as well)