mirror of
https://github.com/trapexit/mergerfs.git
synced 2025-04-24 22:14:05 +08:00
on ENOENT try cloning the dest path to source drive. closes #20
This commit is contained in:
parent
ccb0ac1463
commit
2295714548
18
src/link.cpp
18
src/link.cpp
@ -59,10 +59,26 @@ _link(const fs::SearchFunc searchFunc,
|
||||
for(fs::PathVector::const_iterator
|
||||
i = paths.begin(), ei = paths.end(); i != ei; ++i)
|
||||
{
|
||||
int lrv;
|
||||
const string pathfrom = fs::make_path(i->base,from);
|
||||
const string pathto = fs::make_path(i->base,to);
|
||||
|
||||
rv &= ::link(pathfrom.c_str(),pathto.c_str());
|
||||
lrv = ::link(pathfrom.c_str(),pathto.c_str());
|
||||
if(lrv == -1 && errno == ENOENT)
|
||||
{
|
||||
string todir;
|
||||
fs::PathVector topaths;
|
||||
|
||||
todir = fs::dirname(to);
|
||||
fs::find::ffwp(srcmounts,todir,topaths);
|
||||
if(topaths.size() > 0)
|
||||
{
|
||||
fs::clonepath(topaths[0].base,i->base,todir);
|
||||
lrv = ::link(pathfrom.c_str(),pathto.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
rv &= lrv;
|
||||
if(rv == -1)
|
||||
error = errno;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user