mirror of
https://github.com/ostreedev/ostree.git
synced 2025-03-16 10:50:43 +03:00
lib/commit: Directly use FICLONE for payload link
The idea of payload linking is to reflink between objects where possible. Instead of relying on `glnx_regfile_copy_bytes` to hit the `FICLONE` path, just call `FICLONE` directly. At that point in the code, we've already established that the source and dest repos are on the same filesystem and that it supports `FICLONE`. Related: https://gitlab.gnome.org/GNOME/libglnx/-/merge_requests/41 Related: https://github.com/ostreedev/ostree/pull/2684#issuecomment-1204068437
This commit is contained in:
parent
4471c252a9
commit
93e47f88f4
@ -881,11 +881,8 @@ _try_clone_from_payload_link (OstreeRepo *self,
|
||||
else
|
||||
{
|
||||
/* This undoes all of the previous writes; we want to generate reflinked data. */
|
||||
if (ftruncate (tmpf->fd, 0) < 0)
|
||||
return glnx_throw_errno_prefix (error, "ftruncate");
|
||||
|
||||
if (glnx_regfile_copy_bytes (fdf, tmpf->fd, -1) < 0)
|
||||
return glnx_throw_errno_prefix (error, "regfile copy");
|
||||
if (ioctl (tmpf->fd, FICLONE, fdf) < 0)
|
||||
return glnx_throw_errno_prefix (error, "FICLONE");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user