} else {
handle_lock.put_read();
handle_lock.get_write();
- uint32_t handle = next_rados_handle.read();
- if (handle == rados.size()) {
- next_rados_handle.set(0);
- handle = 0;
- }
+ const uint32_t handle = next_rados_handle;
rados_map[id] = handle;
- next_rados_handle.inc();
+ if (++next_rados_handle == rados.size()) {
+ next_rados_handle = 0;
+ }
handle_lock.put_write();
return &rados[handle];
}
CephContext *cct;
std::vector<librados::Rados> rados;
- atomic_t next_rados_handle;
+ uint32_t next_rados_handle;
RWLock handle_lock;
std::map<pthread_t, int> rados_map;