From f86e773d6f00fedd315e7d67722d30211aea0046 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 19 Dec 2023 15:00:05 -0500 Subject: [PATCH] deploy: Log calculated needed space To aid debugging issues like https://github.com/coreos/fedora-coreos-tracker/issues/1637 If we're hitting this path where we think we have enough space, let's log what we calculated here to aid in diagnosing why we may later fail with ENOSPC. --- src/libostree/ostree-sysroot-deploy.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c index ebc0b4fcb2..5974ba55ff 100644 --- a/src/libostree/ostree-sysroot-deploy.c +++ b/src/libostree/ostree-sysroot-deploy.c @@ -2657,6 +2657,7 @@ auto_early_prune_old_deployments (OstreeSysroot *self, GPtrArray *new_deployment /* it wasn't in current_bootcsums; add */ net_new_bootcsum_dirs_total_size += bootdir_size; } + g_autofree char *net_new_formatted = g_format_size (net_new_bootcsum_dirs_total_size); { gboolean bootfs_has_space = FALSE; @@ -2667,9 +2668,13 @@ auto_early_prune_old_deployments (OstreeSysroot *self, GPtrArray *new_deployment /* does the bootfs have enough free space for temporarily holding both the new * and old bootdirs? */ if (bootfs_has_space) - return TRUE; /* nothing to do! */ + { + g_printerr ("bootfs is sufficient for calculated new size: %s\n", net_new_formatted); + return TRUE; /* nothing to do! */ + } } + g_printerr ("bootfs requires additional space: %s\n", net_new_formatted); /* OK, we would fail if we tried to write the new bootdirs. Is it salvageable? * First, calculate how much space we could save with the bootcsums scheduled * for removal. */ @@ -2680,14 +2685,20 @@ auto_early_prune_old_deployments (OstreeSysroot *self, GPtrArray *new_deployment bootcsum_dirs_to_remove_total_size += GPOINTER_TO_UINT (sizep); } + { + g_autofree char *to_remove_formated = g_format_size (bootcsum_dirs_to_remove_total_size); + g_printerr ("Size to prune from bootfs: %s\n", to_remove_formated); + } + if (net_new_bootcsum_dirs_total_size > bootcsum_dirs_to_remove_total_size) { + guint64 required_new_space + = net_new_bootcsum_dirs_total_size - bootcsum_dirs_to_remove_total_size; + g_autofree char *required_new_formatted = g_format_size (required_new_space); /* Check whether if we did early prune, we'd have enough space to write * the new bootcsum dirs. */ gboolean bootfs_has_space = FALSE; - if (!dfd_fallocate_check ( - self->boot_fd, net_new_bootcsum_dirs_total_size - bootcsum_dirs_to_remove_total_size, - &bootfs_has_space, error)) + if (!dfd_fallocate_check (self->boot_fd, required_new_space, &bootfs_has_space, error)) return glnx_prefix_error (error, "Checking if prune would give bootfs sufficient space"); if (!bootfs_has_space)