summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-06-13 15:13:47 -0700
committerSage Weil <sage@inktank.com>2013-06-13 15:16:20 -0700
commit68a91995ba4ae7a0dccbe73b9c007e71d86b0d9d (patch)
treed2418942bc17e701db725b9168b154da8d1ac5de
parentdb7d12103a42263e08a660ec33c74eeb70b6a20f (diff)
downloadceph-68a91995ba4ae7a0dccbe73b9c007e71d86b0d9d.tar.gz
osdc/Objecter: kick command ops on osd con resets
Resend osd/pg commands on the OSDSession, just as we do with other request types. Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/osdc/Objecter.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc
index ad7481f42ca..685d8c5fe5e 100644
--- a/src/osdc/Objecter.cc
+++ b/src/osdc/Objecter.cc
@@ -1013,6 +1013,17 @@ void Objecter::kick_requests(OSDSession *session)
send_linger(lresend.begin()->second);
lresend.erase(lresend.begin());
}
+
+ // resend commands
+ map<uint64_t,CommandOp*> cresend; // resend in order
+ for (xlist<CommandOp*>::iterator k = session->command_ops.begin(); !k.end(); ++k) {
+ logger->inc(l_osdc_command_resend);
+ cresend[(*k)->tid] = *k;
+ }
+ while (!cresend.empty()) {
+ _send_command(cresend.begin()->second);
+ cresend.erase(cresend.begin());
+ }
}
void Objecter::schedule_tick()