diff options
author | Sage Weil <sage@inktank.com> | 2012-07-14 14:31:34 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-07-14 17:39:33 -0700 |
commit | 38962abd5b46bac8767ee57b2e7bf1b116ebc5c5 (patch) | |
tree | 3276ddb89b21f78a5b97206848b27b08b41fd69a | |
parent | 6faeedacfba2a2d000905661377f0a1de0c14760 (diff) | |
download | ceph-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.cc | 4 |
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; |