From 913337c557d0be9a3b7b7f5251a5d12a33a5a937 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 31 Mar 2014 14:41:13 -0400 Subject: [PATCH] sysroot-upgrader: Check merge deployment, not ref for differences Otherwise this broke atomicity; we could fetch/store the ref, then crash, and then not upgrade the next time we tried upgrading. The correct model is: the tree has changed if the new ref is different from the merge deployment. --- src/libostree/ostree-sysroot-upgrader.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libostree/ostree-sysroot-upgrader.c b/src/libostree/ostree-sysroot-upgrader.c index b95c448d..c262f2b8 100644 --- a/src/libostree/ostree-sysroot-upgrader.c +++ b/src/libostree/ostree-sysroot-upgrader.c @@ -431,7 +431,7 @@ ostree_sysroot_upgrader_pull (OstreeSysrootUpgrader *self, gboolean ret = FALSE; gs_unref_object OstreeRepo *repo = NULL; char *refs_to_fetch[] = { self->origin_ref, NULL }; - gs_free char *from_revision = NULL; + const char *from_revision = NULL; gs_free char *new_revision = NULL; gs_free char *origin_refspec = NULL; @@ -443,9 +443,8 @@ ostree_sysroot_upgrader_pull (OstreeSysrootUpgrader *self, else origin_refspec = g_strdup (self->origin_ref); - if (!ostree_repo_resolve_rev (repo, origin_refspec, TRUE, &from_revision, - error)) - goto out; + g_assert (self->merge_deployment); + from_revision = ostree_deployment_get_csum (self->merge_deployment); if (self->origin_remote) {