diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index ac3a3dc5..4081b0b6 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -1276,6 +1276,7 @@ devino_cache_lookup (OstreeRepo *self, gboolean ostree_repo_prepare_transaction (OstreeRepo *self, + gboolean enable_commit_hardlink_scan, GCancellable *cancellable, GError **error) { @@ -1285,13 +1286,14 @@ ostree_repo_prepare_transaction (OstreeRepo *self, self->in_transaction = TRUE; - if (!self->loose_object_devino_hash) + if (enable_commit_hardlink_scan) { - self->loose_object_devino_hash = g_hash_table_new_full (devino_hash, devino_equal, g_free, g_free); + if (!self->loose_object_devino_hash) + self->loose_object_devino_hash = g_hash_table_new_full (devino_hash, devino_equal, g_free, g_free); + g_hash_table_remove_all (self->loose_object_devino_hash); + if (!scan_loose_devino (self, self->loose_object_devino_hash, cancellable, error)) + goto out; } - g_hash_table_remove_all (self->loose_object_devino_hash); - if (!scan_loose_devino (self, self->loose_object_devino_hash, cancellable, error)) - goto out; ret = TRUE; out: diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h index 2f7ac7a8..0ed4c2bf 100644 --- a/src/libostree/ostree-repo.h +++ b/src/libostree/ostree-repo.h @@ -77,6 +77,7 @@ GFile * ostree_repo_get_file_object_path (OstreeRepo *self, const char *object); gboolean ostree_repo_prepare_transaction (OstreeRepo *self, + gboolean enable_commit_hardlink_scan, GCancellable *cancellable, GError **error); diff --git a/src/ostree/ostree-pull.c b/src/ostree/ostree-pull.c index ccbb0032..a618ee99 100644 --- a/src/ostree/ostree-pull.c +++ b/src/ostree/ostree-pull.c @@ -1333,7 +1333,7 @@ ostree_builtin_pull (int argc, char **argv, GFile *repo_path, GError **error) } } - if (!ostree_repo_prepare_transaction (pull_data->repo, NULL, error)) + if (!ostree_repo_prepare_transaction (pull_data->repo, FALSE, NULL, error)) goto out; pull_data->metadata_scan_active = TRUE; diff --git a/src/ostree/ot-builtin-commit.c b/src/ostree/ot-builtin-commit.c index 730e3218..96a41ebb 100644 --- a/src/ostree/ot-builtin-commit.c +++ b/src/ostree/ot-builtin-commit.c @@ -351,7 +351,7 @@ ostree_builtin_commit (int argc, char **argv, GFile *repo_path, GError **error) goto out; } - if (!ostree_repo_prepare_transaction (repo, cancellable, error)) + if (!ostree_repo_prepare_transaction (repo, TRUE, cancellable, error)) goto out; in_transaction = TRUE; diff --git a/src/ostree/ot-builtin-pull-local.c b/src/ostree/ot-builtin-pull-local.c index 8b7304db..94f0b880 100644 --- a/src/ostree/ot-builtin-pull-local.c +++ b/src/ostree/ot-builtin-pull-local.c @@ -196,7 +196,7 @@ ostree_builtin_pull_local (int argc, char **argv, GFile *repo_path, GError **err g_print ("%u objects to copy\n", g_hash_table_size (objects_to_copy)); - if (!ostree_repo_prepare_transaction (data.dest_repo, cancellable, error)) + if (!ostree_repo_prepare_transaction (data.dest_repo, FALSE, cancellable, error)) goto out; g_hash_table_iter_init (&hash_iter, objects_to_copy);