#include <getopt.h>
#include <assert.h>
#include <string>
+#include <mutex>
#if defined(__FreeBSD__)
#include <sys/param.h>
#include "include/compat.h"
#include "include/rbd/librbd.h"
-#include "common/Mutex.h"
static int gotrados = 0;
char *pool_name;
rados_t cluster;
rados_ioctx_t ioctx;
-Mutex readdir_lock("read_dir");
+std::mutex readdir_lock;
struct rbd_stat {
u_char valid;
{
struct rbd_image *im;
- readdir_lock.Lock();
-
+ readdir_lock.lock();
+
for (im = rbd_image_data.images; im != NULL; im = im->next)
iter(cookie, im->image_name);
- readdir_lock.Unlock();
+ readdir_lock.unlock();
}
static void count_images_cb(void *cookie, const char *image)
{
unsigned int count = 0;
- readdir_lock.Lock();
+ readdir_lock.lock();
enumerate_images(&rbd_image_data);
- readdir_lock.Unlock();
+ readdir_lock.unlock();
iter_images(&count, count_images_cb);
return count;
}
if (!in_opendir) {
- readdir_lock.Lock();
+ readdir_lock.lock();
enumerate_images(&rbd_image_data);
- readdir_lock.Unlock();
+ readdir_lock.unlock();
}
fd = open_rbd_image(path + 1);
if (fd < 0)
if (path[0] == 0)
return -ENOENT;
- readdir_lock.Lock();
+ readdir_lock.lock();
enumerate_images(&rbd_image_data);
- readdir_lock.Unlock();
+ readdir_lock.unlock();
fd = open_rbd_image(path + 1);
if (fd < 0)
return -ENOENT;
num[0] = 1;
num[1] = 0;
- readdir_lock.Lock();
+ readdir_lock.lock();
enumerate_images(&rbd_image_data);
- readdir_lock.Unlock();
+ readdir_lock.unlock();
iter_images(num, rbdfs_statfs_image_cb);
#define RBDFS_BSIZE 4096
static int rbdfs_opendir(const char *path, struct fuse_file_info *fi)
{
// only one directory, so global "in_opendir" flag should be fine
- readdir_lock.Lock();
+ readdir_lock.lock();
in_opendir++;
enumerate_images(&rbd_image_data);
- readdir_lock.Unlock();
+ readdir_lock.unlock();
return 0;
}
static int rbdfs_releasedir(const char *path, struct fuse_file_info *fi)
{
// see opendir comments
- readdir_lock.Lock();
+ readdir_lock.lock();
in_opendir--;
- readdir_lock.Unlock();
+ readdir_lock.unlock();
return 0;
}