mirror of
https://github.com/trapexit/mergerfs.git
synced 2025-03-14 09:55:12 +08:00
initialize mutex to fix lockup
This commit is contained in:
parent
2dbcd2b07a
commit
50ad648ce4
@ -19,7 +19,7 @@
|
||||
size_t fuse_buf_size(const struct fuse_bufvec *bufv)
|
||||
{
|
||||
size_t i;
|
||||
size_t size = 0;
|
||||
size_t size = 0;
|
||||
|
||||
for (i = 0; i < bufv->count; i++) {
|
||||
if (bufv->buf[i].size == SIZE_MAX)
|
||||
@ -229,8 +229,8 @@ static ssize_t fuse_buf_copy_one(const struct fuse_buf *dst, size_t dst_off,
|
||||
int dst_is_fd = dst->flags & FUSE_BUF_IS_FD;
|
||||
|
||||
if (!src_is_fd && !dst_is_fd) {
|
||||
void *dstmem = dst->mem + dst_off;
|
||||
void *srcmem = src->mem + src_off;
|
||||
char *dstmem = dst->mem + dst_off;
|
||||
char *srcmem = src->mem + src_off;
|
||||
|
||||
if (dstmem != srcmem) {
|
||||
if (dstmem + len <= srcmem || srcmem + len <= dstmem)
|
||||
|
@ -2638,6 +2638,7 @@ static void fuse_lib_getattr(fuse_req_t req, fuse_ino_t ino,
|
||||
|
||||
memset(&buf, 0, sizeof(buf));
|
||||
|
||||
path = NULL;
|
||||
err = (((fi == NULL) || (f->fs->op.fgetattr == NULL)) ?
|
||||
get_path(f,ino,&path) :
|
||||
get_path_nullok(f,ino,&path));
|
||||
@ -2711,9 +2712,10 @@ static void fuse_lib_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr,
|
||||
|
||||
memset(&buf, 0, sizeof(buf));
|
||||
|
||||
path = NULL;
|
||||
err = ((fi == NULL) ?
|
||||
get_path(f,ino,&path) :
|
||||
get_path_nullok(f, ino, &path));
|
||||
get_path_nullok(f,ino,&path));
|
||||
|
||||
if (!err) {
|
||||
struct fuse_intr_data d;
|
||||
|
@ -38,11 +38,15 @@ PolicyCache::Value::Value()
|
||||
PolicyCache::PolicyCache(void)
|
||||
: timeout(DEFAULT_TIMEOUT)
|
||||
{
|
||||
pthread_mutex_init(&_lock,NULL);
|
||||
}
|
||||
|
||||
void
|
||||
PolicyCache::erase(const char *fusepath_)
|
||||
{
|
||||
if(timeout == 0)
|
||||
return;
|
||||
|
||||
pthread_mutex_lock(&_lock);
|
||||
|
||||
_cache.erase(fusepath_);
|
||||
@ -56,6 +60,9 @@ PolicyCache::cleanup(const int prob_)
|
||||
uint64_t now;
|
||||
map<string,Value>::iterator i;
|
||||
|
||||
if(timeout == 0)
|
||||
return;
|
||||
|
||||
if(rand() % prob_)
|
||||
return;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user