Skip to content

Commit

Permalink
lib/checkout: Use TEMP_FAILURE_RETRY()
Browse files Browse the repository at this point in the history
I'm still not sure it's worth using, but it's easier on the eyes for sure.

Closes: #816
Approved by: jlebon
  • Loading branch information
cgwalters authored and rh-atomic-bot committed Apr 27, 2017
1 parent d37acd3 commit 838cbab
Showing 1 changed file with 9 additions and 32 deletions.
41 changes: 9 additions & 32 deletions src/libostree/ostree-repo-checkout.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,7 @@ checkout_object_for_uncompressed_cache (OstreeRepo *self,

if (!self->disable_fsync)
{
int res;
do
res = fsync (fd);
while (G_UNLIKELY (res == -1 && errno == EINTR));
if (G_UNLIKELY (res == -1))
if (TEMP_FAILURE_RETRY (fsync (fd)) < 0)
return glnx_throw_errno (error);
}

Expand Down Expand Up @@ -126,19 +122,11 @@ write_regular_file_content (OstreeRepo *self,

if (mode != OSTREE_REPO_CHECKOUT_MODE_USER)
{
int res;
do
res = fchown (fd,
g_file_info_get_attribute_uint32 (file_info, "unix::uid"),
g_file_info_get_attribute_uint32 (file_info, "unix::gid"));
while (G_UNLIKELY (res == -1 && errno == EINTR));
if (G_UNLIKELY (res == -1))
if (TEMP_FAILURE_RETRY (fchown (fd, g_file_info_get_attribute_uint32 (file_info, "unix::uid"),
g_file_info_get_attribute_uint32 (file_info, "unix::gid"))) < 0)
return glnx_throw_errno (error);

do
res = fchmod (fd, g_file_info_get_attribute_uint32 (file_info, "unix::mode"));
while (G_UNLIKELY (res == -1 && errno == EINTR));
if (G_UNLIKELY (res == -1))
if (TEMP_FAILURE_RETRY (fchmod (fd, g_file_info_get_attribute_uint32 (file_info, "unix::mode"))) < 0)
return glnx_throw_errno (error);

if (xattrs)
Expand Down Expand Up @@ -598,7 +586,6 @@ checkout_tree_at_recurse (OstreeRepo *self,
GError **error)
{
gboolean did_exist = FALSE;
int res;
const gboolean sepolicy_enabled = options->sepolicy && !self->disable_xattrs;
g_autoptr(GVariant) xattrs = NULL;
g_autoptr(GVariant) modified_xattrs = NULL;
Expand Down Expand Up @@ -733,22 +720,15 @@ checkout_tree_at_recurse (OstreeRepo *self,
*/
if (!did_exist)
{
do
res = fchmod (destination_dfd,
g_file_info_get_attribute_uint32 (source_info, "unix::mode"));
while (G_UNLIKELY (res == -1 && errno == EINTR));
if (G_UNLIKELY (res == -1))
if (TEMP_FAILURE_RETRY (fchmod (destination_dfd, g_file_info_get_attribute_uint32 (source_info, "unix::mode"))) < 0)
return glnx_throw_errno (error);
}

if (!did_exist && options->mode != OSTREE_REPO_CHECKOUT_MODE_USER)
{
do
res = fchown (destination_dfd,
g_file_info_get_attribute_uint32 (source_info, "unix::uid"),
g_file_info_get_attribute_uint32 (source_info, "unix::gid"));
while (G_UNLIKELY (res == -1 && errno == EINTR));
if (G_UNLIKELY (res == -1))
if (TEMP_FAILURE_RETRY (fchown (destination_dfd,
g_file_info_get_attribute_uint32 (source_info, "unix::uid"),
g_file_info_get_attribute_uint32 (source_info, "unix::gid"))) < 0)
return glnx_throw_errno (error);
}

Expand All @@ -758,10 +738,7 @@ checkout_tree_at_recurse (OstreeRepo *self,
if (!did_exist)
{
const struct timespec times[2] = { { OSTREE_TIMESTAMP, UTIME_OMIT }, { OSTREE_TIMESTAMP, 0} };
do
res = futimens (destination_dfd, times);
while (G_UNLIKELY (res == -1 && errno == EINTR));
if (G_UNLIKELY (res == -1))
if (TEMP_FAILURE_RETRY (futimens (destination_dfd, times)) < 0)
return glnx_throw_errno (error);
}

Expand Down

0 comments on commit 838cbab

Please sign in to comment.