core: Ensure file data is synced to disk when checking out via non-hardlinks
Otherwise we aren't crash-safe.
This commit is contained in:
parent
e9dd22dc86
commit
238da603b8
|
|
@ -3141,12 +3141,14 @@ checkout_file_from_input (GFile *file,
|
|||
|
||||
xattrs = NULL;
|
||||
}
|
||||
else
|
||||
temp_info = g_object_ref (finfo);
|
||||
|
||||
if (overwrite_mode == OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES)
|
||||
{
|
||||
if (g_file_info_get_file_type (temp_info ? temp_info : finfo) == G_FILE_TYPE_DIRECTORY)
|
||||
if (g_file_info_get_file_type (temp_info) == G_FILE_TYPE_DIRECTORY)
|
||||
{
|
||||
if (!ostree_create_file_from_input (file, temp_info ? temp_info : finfo,
|
||||
if (!ostree_create_file_from_input (file, temp_info,
|
||||
xattrs, input,
|
||||
cancellable, &temp_error))
|
||||
{
|
||||
|
|
@ -3165,8 +3167,7 @@ checkout_file_from_input (GFile *file,
|
|||
{
|
||||
dir = g_file_get_parent (file);
|
||||
if (!ostree_create_temp_file_from_input (dir, NULL, "checkout",
|
||||
temp_info ? temp_info : finfo,
|
||||
xattrs, input, &temp_file,
|
||||
temp_info, xattrs, input, &temp_file,
|
||||
cancellable, error))
|
||||
goto out;
|
||||
|
||||
|
|
@ -3179,11 +3180,17 @@ checkout_file_from_input (GFile *file,
|
|||
}
|
||||
else
|
||||
{
|
||||
if (!ostree_create_file_from_input (file, temp_info ? temp_info : finfo,
|
||||
if (!ostree_create_file_from_input (file, temp_info,
|
||||
xattrs, input, cancellable, error))
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (g_file_info_get_file_type (temp_info) == G_FILE_TYPE_REGULAR)
|
||||
{
|
||||
if (!ensure_file_data_synced (file, cancellable, error))
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = TRUE;
|
||||
out:
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue