repo: Add a private helper to replace a file, honoring fsync policy

Extracted from discussion in https://github.com/GNOME/ostree/pull/83
This commit is contained in:
Colin Walters 2015-04-13 13:28:02 -04:00
parent 1892a6fe13
commit fff8ffdd2f
3 changed files with 28 additions and 3 deletions

View File

@ -126,6 +126,15 @@ _ostree_repo_update_refs (OstreeRepo *self,
GCancellable *cancellable,
GError **error);
gboolean
_ostree_repo_file_replace_contents (OstreeRepo *self,
int dfd,
const char *path,
guint8 *buf,
gsize len,
GCancellable *cancellable,
GError **error);
gboolean
_ostree_repo_write_ref (OstreeRepo *self,
const char *remote,

View File

@ -106,9 +106,8 @@ write_checksum_file_at (OstreeRepo *self,
bufnl[l] = '\n';
bufnl[l+1] = '\0';
if (!glnx_file_replace_contents_at (dfd, name, (guint8*)bufnl, l + 1,
self->disable_fsync ? GLNX_FILE_REPLACE_NODATASYNC : GLNX_FILE_REPLACE_DATASYNC_NEW,
cancellable, error))
if (!_ostree_repo_file_replace_contents (self, dfd, name, (guint8*)bufnl, l + 1,
cancellable, error))
goto out;
}

View File

@ -1502,6 +1502,23 @@ ostree_repo_set_disable_fsync (OstreeRepo *self,
}
/* Replace the contents of a file, honoring the repository's fsync
* policy.
*/
gboolean
_ostree_repo_file_replace_contents (OstreeRepo *self,
int dfd,
const char *path,
guint8 *buf,
gsize len,
GCancellable *cancellable,
GError **error)
{
return glnx_file_replace_contents_at (dfd, path, buf, len,
self->disable_fsync ? GLNX_FILE_REPLACE_NODATASYNC : GLNX_FILE_REPLACE_DATASYNC_NEW,
cancellable, error);
}
/**
* ostree_repo_get_path:
* @self: