summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-07-14 14:31:34 -0700
committerSage Weil <sage@inktank.com>2012-07-14 17:39:33 -0700
commit38962abd5b46bac8767ee57b2e7bf1b116ebc5c5 (patch)
tree3276ddb89b21f78a5b97206848b27b08b41fd69a
parent6faeedacfba2a2d000905661377f0a1de0c14760 (diff)
downloadceph-38962abd5b46bac8767ee57b2e7bf1b116ebc5c5.tar.gz
osd: based misdirected op role calc on acting set
We want to look at the acting set here, nothing else. This was causing us to erroneously queue ops for later (wasting memory) and to erroneously print out a 'misdrected op' message in the cluster log (confusion and incorrect [but ignored] -ENXIO reply). Fixes: #2022 Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/osd/OSD.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index 8a5d04016ac..054bf1b4a8f 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -5074,7 +5074,7 @@ void OSD::handle_op(OpRequestRef op)
if (!pg) {
dout(7) << "hit non-existent pg " << pgid << dendl;
- if (osdmap->get_pg_role(pgid, whoami) >= 0) {
+ if (osdmap->get_pg_acting_role(pgid, whoami) >= 0) {
dout(7) << "we are valid target for op, waiting" << dendl;
waiting_for_pg[pgid].push_back(op);
op->mark_delayed();
@@ -5094,7 +5094,7 @@ void OSD::handle_op(OpRequestRef op)
send_map->have_pg_pool(pgid.pool()))
pgid = send_map->raw_pg_to_pg(pgid);
- if (send_map->get_pg_role(m->get_pg(), whoami) >= 0) {
+ if (send_map->get_pg_acting_role(m->get_pg(), whoami) >= 0) {
dout(7) << "dropping request; client will resend when they get new map" << dendl;
} else {
dout(7) << "we are invalid target" << dendl;