mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2024-11-10 23:00:57 +00:00
Merge pull request #993 from ggtakec/test
Fixed a bug about overwrite metadata at updating directory stats
This commit is contained in:
commit
4db6e1a10a
29
src/s3fs.cpp
29
src/s3fs.cpp
@ -382,7 +382,7 @@ static int chk_dir_object_type(const char* path, string& newpath, string& nowpat
|
||||
(*pType) = DIRTYPE_NOOBJ;
|
||||
nowpath = "";
|
||||
}else{
|
||||
nowpath = path;
|
||||
nowpath = newpath;
|
||||
if(0 < nowpath.length() && '/' == nowpath[nowpath.length() - 1]){
|
||||
// "dir/" type
|
||||
(*pType) = DIRTYPE_NEW;
|
||||
@ -842,18 +842,23 @@ static int put_headers(const char* path, headers_t& meta, bool is_copy)
|
||||
}
|
||||
}
|
||||
|
||||
FdEntity* ent = NULL;
|
||||
if(NULL == (ent = FdManager::get()->ExistOpen(path, -1, !FdManager::IsCacheDir()))){
|
||||
// no opened fd
|
||||
if(FdManager::IsCacheDir()){
|
||||
// create cache file if be needed
|
||||
ent = FdManager::get()->Open(path, &meta, static_cast<ssize_t>(buf.st_size), -1, false, true);
|
||||
// [NOTE]
|
||||
// if path is 'dir/', it does not have cache(could not open file for directory stat)
|
||||
//
|
||||
if('/' != path[strlen(path) - 1]){
|
||||
FdEntity* ent = NULL;
|
||||
if(NULL == (ent = FdManager::get()->ExistOpen(path, -1, !FdManager::IsCacheDir()))){
|
||||
// no opened fd
|
||||
if(FdManager::IsCacheDir()){
|
||||
// create cache file if be needed
|
||||
ent = FdManager::get()->Open(path, &meta, static_cast<ssize_t>(buf.st_size), -1, false, true);
|
||||
}
|
||||
}
|
||||
if(ent){
|
||||
time_t mtime = get_mtime(meta);
|
||||
ent->SetMtime(mtime);
|
||||
FdManager::get()->Close(ent);
|
||||
}
|
||||
}
|
||||
if(ent){
|
||||
time_t mtime = get_mtime(meta);
|
||||
ent->SetMtime(mtime);
|
||||
FdManager::get()->Close(ent);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user