deploy: Add subbootversion to journal
authorColin Walters <walters@verbum.org>
Fri, 26 Feb 2021 00:42:58 +0000 (00:42 +0000)
committerColin Walters <walters@verbum.org>
Sun, 28 Feb 2021 14:47:58 +0000 (14:47 +0000)
To help debug an issue we've seen where `/boot` isn't
in sync with the `/ostree/boot` dir, let's log to the journal
what we're doing.

src/libostree/ostree-sysroot-deploy.c
tests/kolainst/destructive/staged-deploy.sh

index 0fff820be5be9548e4e9dbec9935bae406bbe240..2a06f166aa6cfd73c9add4ccd98406e52b901722 100644 (file)
@@ -1675,6 +1675,7 @@ static gboolean
 swap_bootlinks (OstreeSysroot *self,
                 int            bootversion,
                 GPtrArray     *new_deployments,
+                char         **out_subbootdir,
                 GCancellable  *cancellable,
                 GError       **error)
 {
@@ -1699,7 +1700,8 @@ swap_bootlinks (OstreeSysroot *self,
   if (!symlink_at_replace (ostree_subbootdir_name, ostree_dfd, ostree_bootdir_name,
                            cancellable, error))
     return FALSE;
-
+  if (out_subbootdir)
+    *out_subbootdir = g_steal_pointer (&ostree_subbootdir_name);
   return TRUE;
 }
 
@@ -2253,6 +2255,7 @@ write_deployments_bootswap (OstreeSysroot     *self,
                             OstreeSysrootWriteDeploymentsOpts *opts,
                             OstreeBootloader  *bootloader,
                             SyncStats         *out_syncstats,
+                            char             **out_subbootdir,
                             GCancellable      *cancellable,
                             GError           **error)
 {
@@ -2300,7 +2303,8 @@ write_deployments_bootswap (OstreeSysroot     *self,
                              new_deployments,
                              cancellable, error))
     return FALSE;
-  if (!swap_bootlinks (self, new_bootversion, new_deployments,
+  g_autofree char *new_subbootdir = NULL;
+  if (!swap_bootlinks (self, new_bootversion, new_deployments, &new_subbootdir,
                        cancellable, error))
     return FALSE;
 
@@ -2326,6 +2330,8 @@ write_deployments_bootswap (OstreeSysroot     *self,
                         cancellable, error))
     return FALSE;
 
+  if (out_subbootdir)
+    *out_subbootdir = g_steal_pointer (&new_subbootdir);
   return TRUE;
 }
 
@@ -2504,6 +2510,7 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot     *self,
   gboolean bootloader_is_atomic = FALSE;
   SyncStats syncstats = { 0, };
   g_autoptr(OstreeBootloader) bootloader = NULL;
+  g_autofree char *new_subbootdir = NULL;
   if (!requires_new_bootversion)
     {
       if (!create_new_bootlinks (self, self->bootversion,
@@ -2515,7 +2522,7 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot     *self,
         return FALSE;
 
       if (!swap_bootlinks (self, self->bootversion,
-                           new_deployments,
+                           new_deployments, &new_subbootdir,
                            cancellable, error))
         return FALSE;
 
@@ -2529,14 +2536,15 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot     *self,
       bootloader_is_atomic = bootloader != NULL && _ostree_bootloader_is_atomic (bootloader);
 
       if (!write_deployments_bootswap (self, new_deployments, opts, bootloader,
-                                       &syncstats, cancellable, error))
+                                       &syncstats, &new_subbootdir, cancellable, error))
         return FALSE;
     }
 
   { g_autofree char *msg =
-      g_strdup_printf ("%s; bootconfig swap: %s; deployment count change: %i",
+      g_strdup_printf ("%s; bootconfig swap: %s; bootversion: %s, deployment count change: %i",
                        (bootloader_is_atomic ? "Transaction complete" : "Bootloader updated"),
                        requires_new_bootversion ? "yes" : "no",
+                       new_subbootdir,
                        new_deployments->len - self->deployments->len);
     const gchar *bootloader_config = ostree_repo_get_bootloader (ostree_sysroot_repo (self));
     ot_journal_send ("MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(OSTREE_DEPLOYMENT_COMPLETE_ID),
index a5da0119b538b3cef4282222004a526c1242e74c..0068ed56172128f22de496cf4391e0bfe37227f2 100755 (executable)
@@ -54,7 +54,7 @@ case "${AUTOPKGTEST_REBOOT_MARK:-}" in
     rpm-ostree status
     # Assert that the previous boot had a journal entry for it
     journalctl -b "-1" -u ostree-finalize-staged.service > svc.txt
-    assert_file_has_content svc.txt 'Bootloader updated; bootconfig swap: yes; deployment count change: 1'
+    assert_file_has_content svc.txt 'Bootloader updated; bootconfig swap: yes;.*deployment count change: 1'
     rm -f svc.txt
     # And there should not be a staged deployment
     test '!' -f /run/ostree/staged-deployment