summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2021-11-18 14:49:15 -0500
committerGitHub <noreply@github.com>2021-11-18 14:49:15 -0500
commitf552e30c0bb8096ca21dc3f7723c9828e4ef3e5c (patch)
tree5ee57df72fa96be53d21d3c694a5cb9da0603723
parentedbcf5213419c3ec09ab40161a6c8ca8f99fa624 (diff)
parent47d32d9eadcbd322a4d6f4345259167a665b51ec (diff)
downloadostree-f552e30c0bb8096ca21dc3f7723c9828e4ef3e5c.tar.gz
Merge pull request #2484 from dbnicholson/prune-serialize
lib/prune: Avoid unnecessary object serialization
-rw-r--r--src/libostree/ostree-repo-prune.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/libostree/ostree-repo-prune.c b/src/libostree/ostree-repo-prune.c
index c4ce64ab..82fcf639 100644
--- a/src/libostree/ostree-repo-prune.c
+++ b/src/libostree/ostree-repo-prune.c
@@ -39,17 +39,17 @@ typedef struct {
} OtPruneData;
static gboolean
-maybe_prune_loose_object (OtPruneData *data,
- OstreeRepoPruneFlags flags,
- const char *checksum,
- OstreeObjectType objtype,
- GCancellable *cancellable,
- GError **error)
+maybe_prune_loose_object (OtPruneData *data,
+ OstreeRepoPruneFlags flags,
+ GVariant *key,
+ GCancellable *cancellable,
+ GError **error)
{
gboolean reachable = FALSE;
- g_autoptr(GVariant) key = NULL;
+ const char *checksum;
+ OstreeObjectType objtype;
- key = ostree_object_name_serialize (checksum, objtype);
+ ostree_object_name_deserialize (key, &checksum, &objtype);
if (g_hash_table_lookup_extended (data->reachable, key, NULL, NULL))
reachable = TRUE;
@@ -276,17 +276,14 @@ repo_prune_internal (OstreeRepo *self,
GLNX_HASH_TABLE_FOREACH_KV (objects, GVariant*, serialized_key, GVariant*, objdata)
{
- const char *checksum;
- OstreeObjectType objtype;
gboolean is_loose;
- ostree_object_name_deserialize (serialized_key, &checksum, &objtype);
g_variant_get_child (objdata, 0, "b", &is_loose);
if (!is_loose)
continue;
- if (!maybe_prune_loose_object (&data, options->flags, checksum, objtype,
+ if (!maybe_prune_loose_object (&data, options->flags, serialized_key,
cancellable, error))
return FALSE;
}