-
Notifications
You must be signed in to change notification settings - Fork 77
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
WIP: Add support for --replace-mode=alongside
for ostree target
#137
base: main
Are you sure you want to change the base?
Conversation
Skipping CI for Draft Pull Request. |
86f6038
to
22671b5
Compare
22671b5
to
e4f00af
Compare
Sorry @cgwalters , accidentally pushed the rebase to your fork instead of mine
EDIT2: Continuing here |
e4f00af
to
22671b5
Compare
I think you can just take over this PR too if you want, or open a new PR from your fork - either way. |
22671b5
to
e4f00af
Compare
Rebased. Without any changes, I'm facing an issue where in an ostree system, the mounted I'll see how I can tweak it so that it finds the right device |
With additional |
@cgwalters thoughts on the above mounts? Do we want to require them for install on ostree targets, or should I figure out a way to make this work without them, using just the already-documented install mounts (i.e. |
We should learn how to peel that. This is really the same thing as https://bugzilla.redhat.com/show_bug.cgi?id=2308594 and ostreedev/ostree#3198 and containers/composefs#280 Short term the simplest is the same logic as the grub patch - detect overlayfs for |
e4f00af
to
923b0ed
Compare
OK. Changed it so that when the target rootfs is an overlay, we'll implicitly try targetting It wasn't working at first and was a bit of a headache for me to debug because apparently if you mount Current code might need a bit of touch-ups, but do you think the direction of the code in its current state is good? Should I clean it up and undraft? |
I think that's possibly because it's bootc that's special casing mounting |
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.
Thanks for picking this up!!
@@ -1336,6 +1352,19 @@ async fn install_to_filesystem_impl(state: &State, rootfs: &mut RootSetup) -> Re | |||
.ok_or_else(|| anyhow!("No uuid for boot/root"))?; | |||
tracing::debug!("boot uuid={boot_uuid}"); | |||
|
|||
// If we're doing an alongside install, then the /dev bootupd sees needs to be the host's. |
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.
I think we can drop this code now and hard require -v /dev:/dev
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.
I see we already require it documentation-wise.
And we also have it as an assertion here when installing to disk with --via-loopback
I've now also added it as an assertion at this code location as well. However since I don't fully understand the motivation for it, I'm not sure if the assertion should only occur in case of ReplaceMode::Alongside
like the comment mentions, or generally
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.
What I'd actually hoped to do is switch to doing dynamic mounts: #826
But in the short term yeah that's fine to have an assertion here.
5775a41
to
3561a64
Compare
Ironically our support for `--replace-mode=alongside` breaks when we're targeting an already extant ostree host, because when we first blow away the `/boot` directory, this means the ostree stack loses its knowledge that we're in a booted deployment, and will attempt to GC it... ostreedev/ostree-rs-ext@8fa019b is a key part of the fix for that. However, a notable improvement we can do here is to grow this whole thing into a real "factory reset" mode, and this will be a compelling answer to coreos/fedora-coreos-tracker#399 To implement this though we need to support configuring the stateroot and not just hardcode `default`. Signed-off-by: Omer Tuchfeld <[email protected]>
3561a64
to
ed94f1e
Compare
@@ -55,6 +58,21 @@ pub(crate) fn find_mount_option<'a>( | |||
.next() | |||
} | |||
|
|||
/// Given a target directory, if it's a read-only mount, then remount it writable | |||
#[context("Opening {target} with writable mount")] | |||
pub(crate) fn open_dir_remount_rw(root: &Dir, target: &Utf8Path) -> Result<Dir> { |
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.
This needs a #[cfg(feature = install)]
looks like
Ironically our support for
--replace-mode=alongside
breaks when we're targeting an already extant ostree host, because when we first blow away the/boot
directory, this means the ostree stack loses its knowledge that we're in a booted deployment, and will attempt to GC it...ostreedev/ostree-rs-ext@8fa019b is a key part of the fix for that.
However, a notable improvement we can do here is to grow this whole thing into a real "factory reset" mode, and this will be a compelling answer to
coreos/fedora-coreos-tracker#399
To implement this though we need to support configuring the stateroot and not just hardcode
default
.