--file->refs;
if (file->refs == 0) {
dout(20) << __func__ << " destroying " << file->fnode << dendl;
- assert(file->num_reading.read() == 0);
+ assert(file->num_reading.load() == 0);
log_t.op_file_remove(file->fnode.ino);
for (auto& r : file->fnode.extents) {
alloc[r.bdev]->release(r.offset, r.length);
dout(10) << __func__ << " h " << h << " " << off << "~" << len
<< " from " << h->file->fnode << dendl;
- h->file->num_reading.inc();
+ ++h->file->num_reading;
if (!h->ignore_eof &&
off + len > h->file->fnode.size) {
}
dout(20) << __func__ << " got " << ret << dendl;
- h->file->num_reading.dec();
+ --h->file->num_reading;
return ret;
}
dout(10) << __func__ << " h " << h << " " << off << "~" << len
<< " from " << h->file->fnode << dendl;
- h->file->num_reading.inc();
+ ++h->file->num_reading;
if (!h->ignore_eof &&
off + len > h->file->fnode.size) {
dout(20) << __func__ << " got " << ret << dendl;
assert(!outbl || (int)outbl->length() == ret);
- h->file->num_reading.dec();
+ --h->file->num_reading;
return ret;
}
<< " " << offset << "~" << length
<< " to " << h->file->fnode << dendl;
assert(!h->file->deleted);
- assert(h->file->num_readers.read() == 0);
+ assert(h->file->num_readers.load() == 0);
if (offset + length <= h->pos)
return 0;
#ifndef CEPH_OS_BLUESTORE_BLUEFS_H
#define CEPH_OS_BLUESTORE_BLUEFS_H
+#include <atomic>
#include <mutex>
#include "bluefs_types.h"
bool deleted;
boost::intrusive::list_member_hook<> dirty_item;
- atomic_t num_readers, num_writers;
- atomic_t num_reading;
+ std::atomic_int num_readers, num_writers;
+ std::atomic_int num_reading;
File()
: RefCountedObject(NULL, 0),
refs(0),
dirty(false),
locked(false),
- deleted(false)
+ deleted(false),
+ num_readers(0),
+ num_writers(0),
+ num_reading(0)
{}
~File() {
- assert(num_readers.read() == 0);
- assert(num_writers.read() == 0);
- assert(num_reading.read() == 0);
+ assert(num_readers.load() == 0);
+ assert(num_writers.load() == 0);
+ assert(num_reading.load() == 0);
assert(!locked);
}
FileWriter(FileRef f, unsigned num_bdev)
: file(f),
pos(0) {
- file->num_writers.inc();
+ ++file->num_writers;
iocv.resize(num_bdev);
for (unsigned i = 0; i < num_bdev; ++i) {
iocv[i] = new IOContext(NULL);
}
}
~FileWriter() {
- file->num_writers.dec();
+ --file->num_writers;
assert(iocv.empty()); // caller must call BlueFS::close_writer()
}
buf(mpf),
random(rand),
ignore_eof(ie) {
- file->num_readers.inc();
+ ++file->num_readers;
}
~FileReader() {
- file->num_readers.dec();
+ --file->num_readers;
}
};