mirror of
https://github.com/ostreedev/ostree.git
synced 2025-03-19 22:50:35 +03:00
Don't fail for EPERM when hardlinking
As the manual page doesn't say, but the in-code kernel documentation shows, hardlinking for normal users can fail for a variety of reasons (including very common situations such as non regular file or non writable file), if the owner of the file does not match the user linking (e.g. when checking out a shadow repo with a root- owned master). If that happens, fail back silently to copying instead of aborting the whole operation. https://bugzilla.gnome.org/show_bug.cgi?id=682298
This commit is contained in:
parent
1d93a743dc
commit
1057f8289c
@ -4125,9 +4125,9 @@ checkout_file_hardlink (OstreeRepo *self,
|
||||
|
||||
if (link (ot_gfile_get_path_cached (source), ot_gfile_get_path_cached (destination)) != -1)
|
||||
ret_was_supported = TRUE;
|
||||
else if (errno == EMLINK || errno == EXDEV)
|
||||
else if (errno == EMLINK || errno == EXDEV || errno == EPERM)
|
||||
{
|
||||
/* EMLINK and EXDEV shouldn't be fatal; we just can't do the
|
||||
/* EMLINK, EXDEV and EPERM shouldn't be fatal; we just can't do the
|
||||
* optimization of hardlinking instead of copying.
|
||||
*/
|
||||
ret_was_supported = FALSE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user