Lock FdEntity when mutating orgmeta

References #654.
This commit is contained in:
Andrew Gaul 2017-10-23 22:41:07 -07:00
parent ab89b4cd4a
commit 40501a7a73

View File

@ -1017,9 +1017,9 @@ int FdEntity::SetMtime(time_t time)
if(-1 == time){ if(-1 == time){
return 0; return 0;
} }
if(-1 != fd){
AutoLock auto_lock(&fdent_lock);
AutoLock auto_lock(&fdent_lock);
if(-1 != fd){
struct timeval tv[2]; struct timeval tv[2];
tv[0].tv_sec = time; tv[0].tv_sec = time;
tv[0].tv_usec= 0L; tv[0].tv_usec= 0L;
@ -1046,6 +1046,7 @@ int FdEntity::SetMtime(time_t time)
bool FdEntity::UpdateMtime(void) bool FdEntity::UpdateMtime(void)
{ {
AutoLock auto_lock(&fdent_lock);
struct stat st; struct stat st;
if(!GetStats(st)){ if(!GetStats(st)){
return false; return false;
@ -1067,18 +1068,21 @@ bool FdEntity::GetSize(size_t& size)
bool FdEntity::SetMode(mode_t mode) bool FdEntity::SetMode(mode_t mode)
{ {
AutoLock auto_lock(&fdent_lock);
orgmeta["x-amz-meta-mode"] = str(mode); orgmeta["x-amz-meta-mode"] = str(mode);
return true; return true;
} }
bool FdEntity::SetUId(uid_t uid) bool FdEntity::SetUId(uid_t uid)
{ {
AutoLock auto_lock(&fdent_lock);
orgmeta["x-amz-meta-uid"] = str(uid); orgmeta["x-amz-meta-uid"] = str(uid);
return true; return true;
} }
bool FdEntity::SetGId(gid_t gid) bool FdEntity::SetGId(gid_t gid)
{ {
AutoLock auto_lock(&fdent_lock);
orgmeta["x-amz-meta-gid"] = str(gid); orgmeta["x-amz-meta-gid"] = str(gid);
return true; return true;
} }
@ -1088,6 +1092,7 @@ bool FdEntity::SetContentType(const char* path)
if(!path){ if(!path){
return false; return false;
} }
AutoLock auto_lock(&fdent_lock);
orgmeta["Content-Type"] = S3fsCurl::LookupMimeType(string(path)); orgmeta["Content-Type"] = S3fsCurl::LookupMimeType(string(path));
return true; return true;
} }