diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index e1649c1dd2..eb5f92a41d 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -404,31 +404,18 @@ add_size_index_to_metadata (OstreeRepo *self, return g_variant_ref_sink (g_variant_builder_end (builder)); } -/* Combines a check for whether or not we already have the object with - * allocating a tempfile if we don't. Used by the static delta code. +/* Create a tmpfile for writing a bare file. Currently just used + * by the static delta code, but will likely later be extended + * to be used also by the dfd_iter commit path. */ gboolean _ostree_repo_open_content_bare (OstreeRepo *self, const char *checksum, guint64 content_len, GLnxTmpfile *out_tmpf, - gboolean *out_have_object, GCancellable *cancellable, GError **error) { - gboolean have_obj; - if (!_ostree_repo_has_loose_object (self, checksum, OSTREE_OBJECT_TYPE_FILE, &have_obj, - cancellable, error)) - return FALSE; - /* Do we already have this object? */ - *out_have_object = have_obj; - if (have_obj) - { - /* Make sure the tempfile is unset */ - out_tmpf->initialized = 0; - return TRUE; - } - return glnx_open_tmpfile_linkable_at (self->tmp_dir_fd, ".", O_WRONLY|O_CLOEXEC, out_tmpf, error); } diff --git a/src/libostree/ostree-repo-private.h b/src/libostree/ostree-repo-private.h index bbbb700e31..d8d16e1a53 100644 --- a/src/libostree/ostree-repo-private.h +++ b/src/libostree/ostree-repo-private.h @@ -370,7 +370,6 @@ _ostree_repo_open_content_bare (OstreeRepo *self, const char *checksum, guint64 content_len, GLnxTmpfile *out_tmpf, - gboolean *out_have_object, GCancellable *cancellable, GError **error); diff --git a/src/libostree/ostree-repo-static-delta-processing.c b/src/libostree/ostree-repo-static-delta-processing.c index fac377ec6f..7517046edb 100644 --- a/src/libostree/ostree-repo-static-delta-processing.c +++ b/src/libostree/ostree-repo-static-delta-processing.c @@ -583,15 +583,18 @@ dispatch_open_splice_and_close (OstreeRepo *repo, if (S_ISREG (state->mode) && _ostree_repo_mode_is_bare (repo->mode)) { - if (!_ostree_repo_open_content_bare (repo, state->checksum, - state->content_size, - &state->tmpf, - &state->have_obj, - cancellable, error)) + if (!ostree_repo_has_object (repo, OSTREE_OBJECT_TYPE_FILE, state->checksum, + &state->have_obj, cancellable, error)) goto out; if (!state->have_obj) { + if (!_ostree_repo_open_content_bare (repo, state->checksum, + state->content_size, + &state->tmpf, + cancellable, error)) + goto out; + state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE); if (!handle_untrusted_content_checksum (repo, state, cancellable, error)) goto out; @@ -682,14 +685,19 @@ dispatch_open (OstreeRepo *repo, if (state->stats_only) return TRUE; /* Early return */ - if (!_ostree_repo_open_content_bare (repo, state->checksum, - state->content_size, - &state->tmpf, - &state->have_obj, - cancellable, error)) + if (!ostree_repo_has_object (repo, OSTREE_OBJECT_TYPE_FILE, state->checksum, + &state->have_obj, cancellable, error)) return FALSE; + if (!state->have_obj) - state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE); + { + if (!_ostree_repo_open_content_bare (repo, state->checksum, + state->content_size, + &state->tmpf, + cancellable, error)) + return FALSE; + state->content_out = g_unix_output_stream_new (state->tmpf.fd, FALSE); + } if (!handle_untrusted_content_checksum (repo, state, cancellable, error)) return FALSE;