Merge pull request #3749 from rodarima/master

Fall back to copyPath if link fails with EPERM
This commit is contained in:
Eelco Dolstra 2020-06-29 13:31:24 +02:00 committed by GitHub
commit 64232f3ea6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1950,8 +1950,11 @@ void linkOrCopy(const Path & from, const Path & to)
/* Hard-linking fails if we exceed the maximum link count on a
file (e.g. 32000 of ext3), which is quite possible after a
'nix-store --optimise'. FIXME: actually, why don't we just
bind-mount in this case? */
if (errno != EMLINK)
bind-mount in this case?
It can also fail with EPERM in BeegFS v7 and earlier versions
which don't allow hard-links to other directories */
if (errno != EMLINK && errno != EPERM)
throw SysError("linking '%s' to '%s'", to, from);
copyPath(from, to);
}