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:
parent
1892a6fe13
commit
fff8ffdd2f
|
|
@ -126,6 +126,15 @@ _ostree_repo_update_refs (OstreeRepo *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
_ostree_repo_file_replace_contents (OstreeRepo *self,
|
||||||
|
int dfd,
|
||||||
|
const char *path,
|
||||||
|
guint8 *buf,
|
||||||
|
gsize len,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
_ostree_repo_write_ref (OstreeRepo *self,
|
_ostree_repo_write_ref (OstreeRepo *self,
|
||||||
const char *remote,
|
const char *remote,
|
||||||
|
|
|
||||||
|
|
@ -106,9 +106,8 @@ write_checksum_file_at (OstreeRepo *self,
|
||||||
bufnl[l] = '\n';
|
bufnl[l] = '\n';
|
||||||
bufnl[l+1] = '\0';
|
bufnl[l+1] = '\0';
|
||||||
|
|
||||||
if (!glnx_file_replace_contents_at (dfd, name, (guint8*)bufnl, l + 1,
|
if (!_ostree_repo_file_replace_contents (self, dfd, name, (guint8*)bufnl, l + 1,
|
||||||
self->disable_fsync ? GLNX_FILE_REPLACE_NODATASYNC : GLNX_FILE_REPLACE_DATASYNC_NEW,
|
cancellable, error))
|
||||||
cancellable, error))
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
* ostree_repo_get_path:
|
||||||
* @self:
|
* @self:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue