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;
/* 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;
{
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[] = {
# 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"
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
# 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"
# 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
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