mirror of
https://github.com/s3fs-fuse/s3fs-fuse.git
synced 2025-02-03 02:58:26 +00:00
Fix locking annotations and add one missing lock (#2542)
This allows clang's thread safety checks to pass.
This commit is contained in:
parent
15e2eae69a
commit
40f95272be
@ -108,7 +108,7 @@ class FdManager
|
|||||||
return GetFdEntityHasLock(path, existfd, newfd);
|
return GetFdEntityHasLock(path, existfd, newfd);
|
||||||
}
|
}
|
||||||
FdEntity* GetFdEntityHasLock(const char* path, int& existfd, bool newfd = true) REQUIRES(FdManager::fd_manager_lock);
|
FdEntity* GetFdEntityHasLock(const char* path, int& existfd, bool newfd = true) REQUIRES(FdManager::fd_manager_lock);
|
||||||
FdEntity* Open(int& fd, const char* path, const headers_t* pmeta, off_t size, const struct timespec& ts_mctime, int flags, bool force_tmpfile, bool is_create, bool ignore_modify) REQUIRES(FdManager::fd_manager_lock);
|
FdEntity* Open(int& fd, const char* path, const headers_t* pmeta, off_t size, const struct timespec& ts_mctime, int flags, bool force_tmpfile, bool is_create, bool ignore_modify);
|
||||||
FdEntity* GetExistFdEntity(const char* path, int existfd = -1);
|
FdEntity* GetExistFdEntity(const char* path, int existfd = -1);
|
||||||
FdEntity* OpenExistFdEntity(const char* path, int& fd, int flags = O_RDONLY);
|
FdEntity* OpenExistFdEntity(const char* path, int& fd, int flags = O_RDONLY);
|
||||||
void Rename(const std::string &from, const std::string &to);
|
void Rename(const std::string &from, const std::string &to);
|
||||||
|
@ -85,12 +85,12 @@ class FdEntity
|
|||||||
int NoCachePreMultipartPost(PseudoFdInfo* pseudo_obj);
|
int NoCachePreMultipartPost(PseudoFdInfo* pseudo_obj);
|
||||||
int NoCacheMultipartPost(PseudoFdInfo* pseudo_obj, int tgfd, off_t start, off_t size);
|
int NoCacheMultipartPost(PseudoFdInfo* pseudo_obj, int tgfd, off_t start, off_t size);
|
||||||
int NoCacheCompleteMultipartPost(PseudoFdInfo* pseudo_obj);
|
int NoCacheCompleteMultipartPost(PseudoFdInfo* pseudo_obj);
|
||||||
int RowFlushNoMultipart(const PseudoFdInfo* pseudo_obj, const char* tpath);
|
int RowFlushNoMultipart(const PseudoFdInfo* pseudo_obj, const char* tpath) REQUIRES(FdEntity::fdent_lock, FdEntity::fdent_data_lock);
|
||||||
int RowFlushMultipart(PseudoFdInfo* pseudo_obj, const char* tpath);
|
int RowFlushMultipart(PseudoFdInfo* pseudo_obj, const char* tpath) REQUIRES(FdEntity::fdent_lock, FdEntity::fdent_data_lock);
|
||||||
int RowFlushMixMultipart(PseudoFdInfo* pseudo_obj, const char* tpath);
|
int RowFlushMixMultipart(PseudoFdInfo* pseudo_obj, const char* tpath) REQUIRES(FdEntity::fdent_lock, FdEntity::fdent_data_lock);
|
||||||
int RowFlushStreamMultipart(PseudoFdInfo* pseudo_obj, const char* tpath);
|
int RowFlushStreamMultipart(PseudoFdInfo* pseudo_obj, const char* tpath) REQUIRES(FdEntity::fdent_lock, FdEntity::fdent_data_lock);
|
||||||
ssize_t WriteNoMultipart(const PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size);
|
ssize_t WriteNoMultipart(const PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size) REQUIRES(FdEntity::fdent_lock, FdEntity::fdent_data_lock);
|
||||||
ssize_t WriteMultipart(PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size);
|
ssize_t WriteMultipart(PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size) REQUIRES(FdEntity::fdent_lock, FdEntity::fdent_data_lock);
|
||||||
ssize_t WriteMixMultipart(PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size);
|
ssize_t WriteMixMultipart(PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size);
|
||||||
ssize_t WriteStreamUpload(PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size);
|
ssize_t WriteStreamUpload(PseudoFdInfo* pseudo_obj, const char* bytes, off_t start, size_t size);
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ class FdEntity
|
|||||||
return FindPseudoFdWithLock(fd);
|
return FindPseudoFdWithLock(fd);
|
||||||
}
|
}
|
||||||
bool FindPseudoFdWithLock(int fd) const REQUIRES(FdEntity::fdent_lock);
|
bool FindPseudoFdWithLock(int fd) const REQUIRES(FdEntity::fdent_lock);
|
||||||
int Open(const headers_t* pmeta, off_t size, const struct timespec& ts_mctime, int flags) REQUIRES(FdEntity::fdent_lock);
|
int Open(const headers_t* pmeta, off_t size, const struct timespec& ts_mctime, int flags);
|
||||||
bool LoadAll(int fd, headers_t* pmeta = nullptr, off_t* size = nullptr, bool force_load = false);
|
bool LoadAll(int fd, headers_t* pmeta = nullptr, off_t* size = nullptr, bool force_load = false);
|
||||||
int Dup(int fd) {
|
int Dup(int fd) {
|
||||||
const std::lock_guard<std::mutex> lock(fdent_lock);
|
const std::lock_guard<std::mutex> lock(fdent_lock);
|
||||||
|
@ -577,6 +577,7 @@ ssize_t PseudoFdInfo::UploadBoundaryLastUntreatedArea(const char* path, headers_
|
|||||||
//
|
//
|
||||||
// Upload Multipart parts
|
// Upload Multipart parts
|
||||||
//
|
//
|
||||||
|
const std::lock_guard<std::mutex> lock(upload_list_lock);
|
||||||
if(!ParallelMultipartUpload(path, to_upload_list, false)){
|
if(!ParallelMultipartUpload(path, to_upload_list, false)){
|
||||||
S3FS_PRN_ERR("Failed to upload multipart parts.");
|
S3FS_PRN_ERR("Failed to upload multipart parts.");
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user