mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-09 01:18:35 +03:00
sysroot: Promote the "early prune" behavior to default
I think we have enough testing for this, let's default it to on, and change the variable to allow opt-out in case it does introduce a regression.
This commit is contained in:
parent
4dd3cb3520
commit
d5cfbed5bc
@ -2843,9 +2843,8 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot *self, GPtrArray *n
|
||||
if (!_ostree_sysroot_ensure_writable (self, error))
|
||||
return FALSE;
|
||||
|
||||
/* for now, this is gated on an environment variable */
|
||||
const gboolean opted_in = (self->opt_flags & OSTREE_SYSROOT_GLOBAL_OPT_EARLY_PRUNE) > 0;
|
||||
if (opted_in && !opts->disable_auto_early_prune
|
||||
const bool skip_early_prune = (self->opt_flags & OSTREE_SYSROOT_GLOBAL_OPT_NO_EARLY_PRUNE) > 0;
|
||||
if (!skip_early_prune && !opts->disable_auto_early_prune
|
||||
&& !auto_early_prune_old_deployments (self, new_deployments, cancellable, error))
|
||||
return FALSE;
|
||||
|
||||
|
@ -44,7 +44,7 @@ typedef enum
|
||||
/* Skip invoking `sync()` */
|
||||
OSTREE_SYSROOT_GLOBAL_OPT_SKIP_SYNC = 1 << 0,
|
||||
/* See https://github.com/ostreedev/ostree/pull/2847 */
|
||||
OSTREE_SYSROOT_GLOBAL_OPT_EARLY_PRUNE = 1 << 1,
|
||||
OSTREE_SYSROOT_GLOBAL_OPT_NO_EARLY_PRUNE = 1 << 1,
|
||||
OSTREE_SYSROOT_GLOBAL_OPT_BOOTLOADER_NAMING_2 = 1 << 2,
|
||||
} OstreeSysrootGlobalOptFlags;
|
||||
|
||||
|
@ -179,7 +179,7 @@ ostree_sysroot_init (OstreeSysroot *self)
|
||||
{
|
||||
const GDebugKey globalopt_keys[] = {
|
||||
{ "skip-sync", OSTREE_SYSROOT_GLOBAL_OPT_SKIP_SYNC },
|
||||
{ "early-prune", OSTREE_SYSROOT_GLOBAL_OPT_EARLY_PRUNE },
|
||||
{ "no-early-prune", OSTREE_SYSROOT_GLOBAL_OPT_NO_EARLY_PRUNE },
|
||||
{ "bootloader-naming-2", OSTREE_SYSROOT_GLOBAL_OPT_BOOTLOADER_NAMING_2 },
|
||||
};
|
||||
const GDebugKey keys[] = {
|
||||
|
@ -44,7 +44,7 @@ assert_bootfs_has_n_bootcsum_dirs 1
|
||||
# the booted deployment is never pruned, so this is a hopeless case and auto-pruning can't save us
|
||||
consume_bootfs_space
|
||||
rpm-ostree rebase :modkernel1
|
||||
if OSTREE_SYSROOT_OPTS=early-prune ostree admin finalize-staged |& tee out.txt; then
|
||||
if ostree admin finalize-staged |& tee out.txt; then
|
||||
assert_not_reached "successfully wrote to filled up bootfs"
|
||||
fi
|
||||
assert_file_has_content out.txt "Disabling auto-prune optimization; insufficient space left in bootfs"
|
||||
@ -58,7 +58,7 @@ rpm-ostree cleanup -bpr
|
||||
assert_bootfs_has_n_bootcsum_dirs 1
|
||||
|
||||
rpm-ostree rebase :modkernel1
|
||||
OSTREE_SYSROOT_OPTS=early-prune ostree admin finalize-staged |& tee out.txt
|
||||
ostree admin finalize-staged |& tee out.txt
|
||||
assert_not_file_has_content out.txt "updating bootloader in two steps"
|
||||
rm out.txt
|
||||
|
||||
@ -71,7 +71,7 @@ bootloader_orig=$(sha256sum /boot/loader/entries/*)
|
||||
# now try to deploy a third deployment without early pruning; we should hit ENOSPC
|
||||
consume_bootfs_space
|
||||
rpm-ostree rebase :modkernel2
|
||||
if ostree admin finalize-staged |& tee out.txt; then
|
||||
if OSTREE_SYSROOT_OPTS=no-early-prune ostree admin finalize-staged |& tee out.txt; then
|
||||
assert_not_reached "successfully wrote kernel without auto-pruning"
|
||||
fi
|
||||
assert_file_has_content out.txt "No space left on device"
|
||||
@ -86,7 +86,7 @@ assert_streq "$bootloader_orig" "$(sha256sum /boot/loader/entries/*)"
|
||||
|
||||
# now, try again but with auto-pruning enabled
|
||||
rpm-ostree rebase :modkernel2
|
||||
OSTREE_SYSROOT_OPTS=early-prune ostree admin finalize-staged |& tee out.txt
|
||||
ostree admin finalize-staged |& tee out.txt
|
||||
assert_file_has_content out.txt "updating bootloader in two steps"
|
||||
rm out.txt
|
||||
|
||||
@ -120,15 +120,16 @@ unshare -m bash -c \
|
||||
consume_bootfs_space "$((free_blocks))"
|
||||
|
||||
rpm-ostree rebase :modkernel1
|
||||
if ostree admin finalize-staged |& tee out.txt; then
|
||||
# Disable auto-pruning to verify we reproduce the bug
|
||||
if OSTREE_SYSROOT_OPTS=no-early-prune ostree admin finalize-staged |& tee out.txt; then
|
||||
assert_not_reached "successfully wrote kernel without auto-pruning"
|
||||
fi
|
||||
assert_file_has_content out.txt "No space left on device"
|
||||
rm out.txt
|
||||
|
||||
# now, try again but with auto-pruning enabled
|
||||
# now, try again but with (now default) auto-pruning enabled
|
||||
rpm-ostree rebase :modkernel1
|
||||
OSTREE_SYSROOT_OPTS=early-prune ostree admin finalize-staged |& tee out.txt
|
||||
ostree admin finalize-staged |& tee out.txt
|
||||
assert_file_has_content out.txt "updating bootloader in two steps"
|
||||
rm out.txt
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user