}
finish_contexts(cct, ls);
-
+ ob->put();
}
}
// stake our claim.
o->rdlock_ref++;
+
+ o->get();
// wait?
if (o->lock_state == Object::LOCK_RDLOCKING ||
// stake our claim.
o->wrlock_ref++;
-
+
+ o->get();
+
// wait?
if (o->lock_state == Object::LOCK_WRLOCKING ||
o->lock_state == Object::LOCK_UPGRADING) {
o->lock_state = Object::LOCK_RDUNLOCKING;
+ o->get();
+
C_LockAck *lockack = new C_LockAck(this, o->oloc.pool, o->get_soid());
C_WriteCommit *commit = new C_WriteCommit(this, o->oloc.pool,
o->get_soid(), 0, 0);
flush(o, 0, 0); // flush first
+ o->get();
+
int op = 0;
if (o->rdlock_ref > 0) {
ldout(cct, 10) << "wrunlock rdlock " << *o << dendl;