Browse Source

fuse_getattr.cpp

getattr-cache
Antonio SJ Musumeci 8 months ago
parent
commit
7856eeb40e
  1. 31
      src/fuse_getattr.cpp

31
src/fuse_getattr.cpp

@ -155,36 +155,13 @@ namespace l
fullpath = fs::path::make(basepath,fusepath_); fullpath = fs::path::make(basepath,fusepath_);
rv = l::getattr(fullpath,followsymlinks_,st_); rv = l::getattr(fullpath,followsymlinks_,st_);
if(rv == 0)
break;
if((rv == -1) && (errno != ENOENT)) if((rv == -1) && (errno != ENOENT))
break;
for(int c = 0; c < 2; c++)
{ {
const char *basepath;
basepath = cache.find(fusepath_);
if(!basepath)
{
rv = searchFunc_(branches_,fusepath_,&basepaths);
if(rv == -1)
return -errno;
basepath = cache.insert(fusepath_,basepaths[0]);
}
fullpath = fs::path::make(basepath,fusepath_);
rv = l::getattr(fullpath,followsymlinks_,st_);
if(rv == 0)
break;
if((rv == -1) && (errno != ENOENT))
break;
rv = searchFunc_(branches_,fusepath_,&basepaths);
if(rv == -1)
return -errno;
basepath = cache.insert(fusepath_,basepaths[0]);
} }
if(rv == -1) if(rv == -1)

Loading…
Cancel
Save