-
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
Installinator is broken on mio v1.0.2 due to there not being eventfds #6391
Comments
To clarify what's going wrong here, |
Thanks for jumping on this! As the person responsible for landing Tokio 1.39.2 in omicron, I've added I've added a topic to tomorrow's control plane sync about considering backing it out for r10. (And reintroducing it in r11 so we get more dogfooding time.) |
I'm presently attempting to mupdate |
@hawkw is this resolved? Sounded from yesterday's meeting like helios#171 did the job. And we've backed out the Tokio update for r10 anyway. |
Yup, oxidecomputer/helios#171 fixed this! |
Tokio 1.39/mio 1.0 switches out the illumos impl to being eventfd based. For release 10 we decided that that was too risky, so we switched back to Tokio 1.38. Now that the r10 branch has been cut, we can go back and update Tokio to 1.39.3. We'd like to land this early in the cycle to get as much soak time as possible. See: * #6356 * #6249 * oxidecomputer/helios#169 * oxidecomputer/helios#171 * #6391
A recent Omicron TUF repo (from commit 58ae0d1) can no longer be installed on
london
. Instead, the mupdate process hangs at "Downloading Installinator and waiting for it to start", although the Wicket UI indicates that the installinator image is 100% downloaded:When tailing logs from Installinator on an effected sled, we see that the Installinator binary has failed with the error "Failed building the Runtime" due to an OS "No such file or directory" error.
This error is coming not from our code, but from Tokio (specifically, the
#[tokio::main]
macro calling intotokio::runtime::Builder::build()
. It appears that we can no longer start a Tokio runtime in the installinator binary.This seems to have resulted from updating to
mio
v1.0.2. PR tokio-rs/mio#1826 changed illumos builds ofmio
to use theeventfd
-based waker implementation, rather than the pipe-based waker. But, the installinator trampoline image does not haveeventfd
1:This does not mean that any Rust code using
mio
v1.0.2+ is broken on Helios/illumos; this specifically effects the recovery/trampoline images, because they don't haveeventfd
. Normal illumos should be able to runmio
v1.0.2 without encountering this problem.Important
Critically, this means that any Omicron TUF repo built since d7d4bea is, for all intents and purposes, non-viable. You can't install it on any system. Don't try to.
Footnotes
Per @rmustacc, "The
eventfd.conf
is in the elide list for recovery, but not the driver. However, because it's a pseudo-device driver, missing that will mean that it won't get created." ↩The text was updated successfully, but these errors were encountered: