core: Only do devino scan on commit (speeds up pull)

When fetching data remotely, there's no point to the devino scan
because we're not going to be committing local files.

Only do it for "commit".
This commit is contained in:
Colin Walters 2012-10-05 17:12:39 -04:00
parent efe27f1b05
commit 52a0b7bdb1
5 changed files with 11 additions and 8 deletions

View File

@ -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:

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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);