sysroot: Drop an fsync for origin file when writing deployments
More fsync pruning. Since we have a public API for writing the origin file and it did a fsync before, let's preserve that. But when writing deployments as part of a full transaction, we rely on the global `syncfs()`, so add an internal function for origin file writing that doesn't. Closes: #509 Approved by: giuseppe
This commit is contained in:
parent
fcffb73280
commit
4f736ac33e
|
|
@ -894,22 +894,11 @@ merge_configuration (OstreeSysroot *sysroot,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* ostree_sysroot_write_origin_file:
|
||||
* @sysroot: System root
|
||||
* @deployment: Deployment
|
||||
* @new_origin: (allow-none): Origin content
|
||||
* @cancellable: Cancellable
|
||||
* @error: Error
|
||||
*
|
||||
* Immediately replace the origin file of the referenced @deployment
|
||||
* with the contents of @new_origin. If @new_origin is %NULL,
|
||||
* this function will write the current origin of @deployment.
|
||||
*/
|
||||
gboolean
|
||||
ostree_sysroot_write_origin_file (OstreeSysroot *sysroot,
|
||||
static gboolean
|
||||
write_origin_file_internal (OstreeSysroot *sysroot,
|
||||
OstreeDeployment *deployment,
|
||||
GKeyFile *new_origin,
|
||||
GLnxFileReplaceFlags flags,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
|
|
@ -933,7 +922,7 @@ ostree_sysroot_write_origin_file (OstreeSysroot *sysroot,
|
|||
|
||||
if (!glnx_file_replace_contents_at (sysroot->sysroot_fd,
|
||||
origin_path, (guint8*)contents, len,
|
||||
GLNX_FILE_REPLACE_DATASYNC_NEW,
|
||||
flags,
|
||||
cancellable, error))
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -941,6 +930,30 @@ ostree_sysroot_write_origin_file (OstreeSysroot *sysroot,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* ostree_sysroot_write_origin_file:
|
||||
* @sysroot: System root
|
||||
* @deployment: Deployment
|
||||
* @new_origin: (allow-none): Origin content
|
||||
* @cancellable: Cancellable
|
||||
* @error: Error
|
||||
*
|
||||
* Immediately replace the origin file of the referenced @deployment
|
||||
* with the contents of @new_origin. If @new_origin is %NULL,
|
||||
* this function will write the current origin of @deployment.
|
||||
*/
|
||||
gboolean
|
||||
ostree_sysroot_write_origin_file (OstreeSysroot *sysroot,
|
||||
OstreeDeployment *deployment,
|
||||
GKeyFile *new_origin,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
return write_origin_file_internal (sysroot, deployment, new_origin,
|
||||
GLNX_FILE_REPLACE_DATASYNC_NEW,
|
||||
cancellable, error);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
get_kernel_from_tree (int deployment_dfd,
|
||||
int *out_boot_dfd,
|
||||
|
|
@ -2152,7 +2165,11 @@ ostree_sysroot_deploy_tree (OstreeSysroot *self,
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (!ostree_sysroot_write_origin_file (self, new_deployment, NULL,
|
||||
/* Don't fsync here, as we assume that's all done in
|
||||
* ostree_sysroot_write_deployments().
|
||||
*/
|
||||
if (!write_origin_file_internal (self, new_deployment, NULL,
|
||||
GLNX_FILE_REPLACE_NODATASYNC,
|
||||
cancellable, error))
|
||||
{
|
||||
g_prefix_error (error, "Writing out origin file: ");
|
||||
|
|
|
|||
Loading…
Reference in New Issue