]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/BlueFS: use std::atomic
authorSage Weil <sage@redhat.com>
Wed, 27 Jan 2016 19:00:51 +0000 (14:00 -0500)
committerSage Weil <sage@redhat.com>
Wed, 27 Jan 2016 19:10:22 +0000 (14:10 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueFS.cc
src/os/bluestore/BlueFS.h

index 562d477b6c953bc30f7d633cb71a8f802dad5063..bb9c4850dfb2f1c150e967ff085d08393cda47f7 100644 (file)
@@ -616,7 +616,7 @@ void BlueFS::_drop_link(FileRef file)
   --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);
@@ -639,7 +639,7 @@ int BlueFS::_read_random(
   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) {
@@ -671,7 +671,7 @@ int BlueFS::_read_random(
   }
 
   dout(20) << __func__ << " got " << ret << dendl;
-  h->file->num_reading.dec();
+  --h->file->num_reading;
   return ret;
 }
 
@@ -686,7 +686,7 @@ int BlueFS::_read(
   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) {
@@ -753,7 +753,7 @@ int BlueFS::_read(
 
   dout(20) << __func__ << " got " << ret << dendl;
   assert(!outbl || (int)outbl->length() == ret);
-  h->file->num_reading.dec();
+  --h->file->num_reading;
   return ret;
 }
 
@@ -951,7 +951,7 @@ int BlueFS::_flush_range(FileWriter *h, uint64_t offset, uint64_t length)
           << " " << 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;
index 0ade7a9ec30d522d265f3e5f06af99ee0da075fb..a5b639b540c4e30c32c6a5decfc77fd0c3dd4b96 100644 (file)
@@ -3,6 +3,7 @@
 #ifndef CEPH_OS_BLUESTORE_BLUEFS_H
 #define CEPH_OS_BLUESTORE_BLUEFS_H
 
+#include <atomic>
 #include <mutex>
 
 #include "bluefs_types.h"
@@ -24,20 +25,23 @@ public:
     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);
     }
 
@@ -81,14 +85,14 @@ public:
     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()
     }
 
@@ -142,10 +146,10 @@ public:
        buf(mpf),
        random(rand),
        ignore_eof(ie) {
-      file->num_readers.inc();
+      ++file->num_readers;
     }
     ~FileReader() {
-      file->num_readers.dec();
+      --file->num_readers;
     }
   };