mirror of
https://github.com/trapexit/mergerfs.git
synced 2024-11-23 09:26:56 +08:00
Call FUSE getattr rather than syscall for extra logic
While more efficient calling regular getattr (stat) leads to incorrect information being returned and would not work correctly when using symlinkify.
This commit is contained in:
parent
34c684a4f5
commit
c43b464d6c
|
@ -62,8 +62,7 @@ namespace l
|
||||||
const string &newbasepath_,
|
const string &newbasepath_,
|
||||||
const char *oldfusepath_,
|
const char *oldfusepath_,
|
||||||
const char *newfusepath_,
|
const char *newfusepath_,
|
||||||
const string &newfusedirpath_,
|
const string &newfusedirpath_)
|
||||||
struct stat *st_)
|
|
||||||
{
|
{
|
||||||
int rv;
|
int rv;
|
||||||
int error;
|
int error;
|
||||||
|
@ -84,9 +83,6 @@ namespace l
|
||||||
rv = fs::link(oldfullpath,newfullpath);
|
rv = fs::link(oldfullpath,newfullpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((rv == 0) && (st_->st_ino == 0))
|
|
||||||
rv = fs::lstat(oldfullpath,st_);
|
|
||||||
|
|
||||||
error = error::calc(rv,error,errno);
|
error = error::calc(rv,error,errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,8 +95,7 @@ namespace l
|
||||||
const Policy::Action &actionFunc_,
|
const Policy::Action &actionFunc_,
|
||||||
const Branches &branches_,
|
const Branches &branches_,
|
||||||
const char *oldfusepath_,
|
const char *oldfusepath_,
|
||||||
const char *newfusepath_,
|
const char *newfusepath_)
|
||||||
struct stat *st_)
|
|
||||||
{
|
{
|
||||||
int rv;
|
int rv;
|
||||||
string newfusedirpath;
|
string newfusedirpath;
|
||||||
|
@ -119,8 +114,7 @@ namespace l
|
||||||
|
|
||||||
return l::link_create_path_loop(oldbasepaths,newbasepaths[0],
|
return l::link_create_path_loop(oldbasepaths,newbasepaths[0],
|
||||||
oldfusepath_,newfusepath_,
|
oldfusepath_,newfusepath_,
|
||||||
newfusedirpath,
|
newfusedirpath);
|
||||||
st_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -208,8 +202,7 @@ namespace l
|
||||||
cfg_->func.link.policy,
|
cfg_->func.link.policy,
|
||||||
cfg_->branches,
|
cfg_->branches,
|
||||||
oldpath_,
|
oldpath_,
|
||||||
newpath_,
|
newpath_);
|
||||||
st_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -223,13 +216,10 @@ namespace l
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
rv = l::link(cfg_,oldpath_,newpath_,st_);
|
rv = l::link(cfg_,oldpath_,newpath_,st_);
|
||||||
|
if(rv < 0)
|
||||||
|
return rv;
|
||||||
|
|
||||||
timeouts_->entry = ((rv >= 0) ?
|
return FUSE::getattr(newpath_,st_,timeouts_);
|
||||||
cfg_->cache_entry :
|
|
||||||
cfg_->cache_negative_entry);
|
|
||||||
timeouts_->attr = cfg_->cache_attr;
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
|
|
Loading…
Reference in New Issue
Block a user