]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/osdc/Objecter.cc
update sources to v12.1.1
[ceph.git] / ceph / src / osdc / Objecter.cc
index 97f97e0275003504c3abbbc2e7d11ffda1f9f73e..fde68cd1ba600b4fce5af2dc663525883cbc6f27 100644 (file)
@@ -3412,6 +3412,22 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m)
   if (rc == -EAGAIN) {
     ldout(cct, 7) << " got -EAGAIN, resubmitting" << dendl;
 
+    if ((op->target.flags & CEPH_OSD_FLAG_BALANCE_READS) 
+       && (op->target.acting_primary != op->target.osd)) {
+      if (op->onfinish)
+       num_in_flight--;
+      _session_op_remove(s, op);
+      sl.unlock();
+      put_session(s);
+
+      op->tid = 0;
+      op->target.flags &= ~CEPH_OSD_FLAG_BALANCE_READS;
+      op->target.pgid = pg_t();
+      _op_submit(op, sul, NULL);
+      m->put();
+      return;
+    }
+
     // new tid
     s->ops.erase(op->tid);
     op->tid = ++last_tid;