namespace librados {
TestMemCluster::File::File()
- : snap_id(), exists(true), lock("TestMemCluster::File::lock") {
+ : snap_id(), exists(true) {
}
TestMemCluster::File::File(const File &rhs)
: data(rhs.data),
mtime(rhs.mtime),
snap_id(rhs.snap_id),
- exists(rhs.exists),
- lock("TestMemCluster::File::lock") {
+ exists(rhs.exists) {
}
-TestMemCluster::Pool::Pool()
- : file_lock("TestMemCluster::Pool::file_lock") {
-}
+TestMemCluster::Pool::Pool() = default;
TestMemCluster::TestMemCluster()
- : m_lock("TestMemCluster::m_lock"),
- m_next_nonce(static_cast<uint32_t>(reinterpret_cast<uint64_t>(this))) {
+ : m_next_nonce(static_cast<uint32_t>(reinterpret_cast<uint64_t>(this))) {
}
TestMemCluster::~TestMemCluster() {
int TestMemCluster::register_object_handler(int64_t pool_id,
const ObjectLocator& locator,
ObjectHandler* object_handler) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
auto pool = get_pool(m_lock, pool_id);
if (pool == nullptr) {
return -ENOENT;
}
- RWLock::WLocker pool_locker(pool->file_lock);
+ std::unique_lock pool_locker{pool->file_lock};
auto file_it = pool->files.find(locator);
if (file_it == pool->files.end()) {
return -ENOENT;
void TestMemCluster::unregister_object_handler(int64_t pool_id,
const ObjectLocator& locator,
ObjectHandler* object_handler) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
auto pool = get_pool(m_lock, pool_id);
if (pool == nullptr) {
return;
}
- RWLock::WLocker pool_locker(pool->file_lock);
+ std::unique_lock pool_locker{pool->file_lock};
auto handlers_it = pool->file_handlers.find(locator);
if (handlers_it == pool->file_handlers.end()) {
return;
}
int TestMemCluster::pool_create(const std::string &pool_name) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
if (m_pools.find(pool_name) != m_pools.end()) {
return -EEXIST;
}
}
int TestMemCluster::pool_delete(const std::string &pool_name) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
Pools::iterator iter = m_pools.find(pool_name);
if (iter == m_pools.end()) {
return -ENOENT;
}
int TestMemCluster::pool_list(std::list<std::pair<int64_t, std::string> >& v) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
v.clear();
for (Pools::iterator iter = m_pools.begin(); iter != m_pools.end(); ++iter) {
v.push_back(std::make_pair(iter->second->pool_id, iter->first));
}
int64_t TestMemCluster::pool_lookup(const std::string &pool_name) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
Pools::iterator iter = m_pools.find(pool_name);
if (iter == m_pools.end()) {
return -ENOENT;
}
int TestMemCluster::pool_reverse_lookup(int64_t id, std::string *name) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
for (Pools::iterator iter = m_pools.begin(); iter != m_pools.end(); ++iter) {
if (iter->second->pool_id == id) {
*name = iter->first;
}
TestMemCluster::Pool *TestMemCluster::get_pool(int64_t pool_id) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
return get_pool(m_lock, pool_id);
}
-TestMemCluster::Pool *TestMemCluster::get_pool(const Mutex& lock,
+TestMemCluster::Pool *TestMemCluster::get_pool(const ceph::mutex& lock,
int64_t pool_id) {
for (auto &pool_pair : m_pools) {
if (pool_pair.second->pool_id == pool_id) {
}
TestMemCluster::Pool *TestMemCluster::get_pool(const std::string &pool_name) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
Pools::iterator iter = m_pools.find(pool_name);
if (iter != m_pools.end()) {
return iter->second;
}
void TestMemCluster::allocate_client(uint32_t *nonce, uint64_t *global_id) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
*nonce = m_next_nonce++;
*global_id = m_next_global_id++;
}
void TestMemCluster::deallocate_client(uint32_t nonce) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
m_blacklist.erase(nonce);
}
bool TestMemCluster::is_blacklisted(uint32_t nonce) const {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
return (m_blacklist.find(nonce) != m_blacklist.end());
}
void TestMemCluster::blacklist(uint32_t nonce) {
m_watch_notify.blacklist(nonce);
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
m_blacklist.insert(nonce);
}
void TestMemCluster::transaction_start(const ObjectLocator& locator) {
- Mutex::Locker locker(m_lock);
- while (m_transactions.count(locator)) {
- m_transaction_cond.Wait(m_lock);
- }
+ std::unique_lock locker{m_lock};
+ m_transaction_cond.wait(locker, [&locator, this] {
+ return m_transactions.count(locator) == 0;
+ });
auto result = m_transactions.insert(locator);
ceph_assert(result.second);
}
void TestMemCluster::transaction_finish(const ObjectLocator& locator) {
- Mutex::Locker locker(m_lock);
+ std::lock_guard locker{m_lock};
size_t count = m_transactions.erase(locator);
ceph_assert(count == 1);
- m_transaction_cond.Signal();
+ m_transaction_cond.notify_all();
}
} // namespace librados