Signed-off-by: Kefu Chai <kchai@redhat.com>
std::unique_lock<std::mutex> lock;
if (osr) {
- auto seq = reinterpret_cast<OpSequencer**>(&osr->p);
- if (*seq == nullptr)
- *seq = new OpSequencer;
- lock = std::unique_lock<std::mutex>((*seq)->mutex);
+ if (!osr->p) {
+ osr->p = new OpSequencer();
+ }
+ auto seq = static_cast<OpSequencer*>(osr->p.get());
+ lock = std::unique_lock<std::mutex>(seq->mutex);
}
for (vector<Transaction>::iterator p = tls.begin(); p != tls.end(); ++p) {
friend void intrusive_ptr_add_ref(Object *o) { o->get(); }
friend void intrusive_ptr_release(Object *o) { o->put(); }
+ Object() : RefCountedObject(nullptr, 0) {}
// interface for object data
virtual size_t get_size() const = 0;
virtual int read(uint64_t offset, uint64_t len, bufferlist &bl) = 0;