Skip to content

Commit

Permalink
Merge pull request #3012 from cgwalters/default-early-prune
Browse files Browse the repository at this point in the history
sysroot: Promote the "early prune" behavior to default
  • Loading branch information
ericcurtin committed Aug 31, 2023
2 parents c0014e0 + d5cfbed commit 8d83823
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 12 deletions.
5 changes: 2 additions & 3 deletions src/libostree/ostree-sysroot-deploy.c
Original file line number Diff line number Diff line change
Expand Up @@ -2761,9 +2761,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;

Expand Down
2 changes: 1 addition & 1 deletion src/libostree/ostree-sysroot-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion src/libostree/ostree-sysroot.c
Original file line number Diff line number Diff line change
Expand Up @@ -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[] = {
Expand Down
15 changes: 8 additions & 7 deletions tests/kolainst/destructive/auto-prune.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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

Expand All @@ -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"
Expand All @@ -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

Expand Down Expand Up @@ -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

Expand Down

0 comments on commit 8d83823

Please sign in to comment.