After we get the copy-from data and unblock the obc, we still need to take
the RWWRITE lock on the object for the duration of the repop while we
actually apply the change locally.
Signed-off-by: Sage Weil <sage@inktank.com>
tctx->new_obs.oi.user_version = results->user_version;
}
+ // take RWWRITE lock for duration of our local write
+ if (!obc->rwstate.get_write_lock()) {
+ assert(0 == "problem!");
+ }
+ tctx->lock_to_release = OpContext::W_LOCK;
+ dout(20) << __func__ << " took lock on obc, " << obc->rwstate << dendl;
+
repop->ondone = new C_KickBlockedObject(obc, this);
finish_ctx(tctx);