From: Josh Durgin Date: Fri, 11 Feb 2011 21:21:05 +0000 (-0800) Subject: objecter: set linger op target pg when a linger is resent X-Git-Tag: v0.25~143^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b7d1d0522f1cfe0cad15802ac8fd568a42528e0c;p=ceph.git objecter: set linger op target pg when a linger is resent send_linger always creates a new Op, but op_submit does not fill in the target pg if an existing session is passed in, so when a linger was resent, it had the wrong pg set. This caused a crash in cosd with debugging turned on when running testlibrbd twice. This occurred because the object context for the linger in the wrong pg had no object name set. --- diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 68a425afca17a..b738fe9b4873a 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -69,6 +69,9 @@ void Objecter::send_linger(LingerOp *info) onack, oncommit, info->pobjver); o->snapid = info->snap; + + if (info->session) + recalc_op_target(o); op_submit(o, info->session); info->registering = true; } else {