linkOrCopy: Fallback upon cross-device link error (EXDEV)
Fix building derivations in local chroot store on OpenAFS, where hard linking accross directories causes cross-device link error (EXDEV).
This commit is contained in:
parent
a0c617348b
commit
eebfe989a5
|
@ -395,8 +395,9 @@ static void linkOrCopy(const Path & from, const Path & to)
|
||||||
bind-mount in this case?
|
bind-mount in this case?
|
||||||
|
|
||||||
It can also fail with EPERM in BeegFS v7 and earlier versions
|
It can also fail with EPERM in BeegFS v7 and earlier versions
|
||||||
|
or fail with EXDEV in OpenAFS
|
||||||
which don't allow hard-links to other directories */
|
which don't allow hard-links to other directories */
|
||||||
if (errno != EMLINK && errno != EPERM)
|
if (errno != EMLINK && errno != EPERM && errno != EXDEV)
|
||||||
throw SysError("linking '%s' to '%s'", to, from);
|
throw SysError("linking '%s' to '%s'", to, from);
|
||||||
copyPath(from, to);
|
copyPath(from, to);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue