From: Jianpeng Ma Date: Mon, 20 Jul 2015 05:46:12 +0000 (+0800) Subject: osd: add some mark_delayed for some delay events. X-Git-Tag: v9.1.0~411^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8dc6c50580f5d80e85a7a74c0a82f49a41d5f097;p=ceph.git osd: add some mark_delayed for some delay events. Signed-off-by: Jianpeng Ma --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 7c2d8501a969..f45720219c6d 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5790,11 +5790,12 @@ void OSD::_dispatch(Message *m) default: { OpRequestRef op = op_tracker.create_request(m); - op->mark_event("waiting_for_osdmap"); // no map? starting up? if (!osdmap) { dout(7) << "no OSDMap, not booted" << dendl; + logger->inc(l_osd_waiting_for_map); waiting_for_osdmap.push_back(op); + op->mark_delayed("no osdmap"); break; } diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 747c187eda40..58684d19550a 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1835,10 +1835,12 @@ void PG::queue_op(OpRequestRef& op) if (!waiting_for_map.empty()) { // preserve ordering waiting_for_map.push_back(op); + op->mark_delayed("waiting_for_map not empty"); return; } if (op_must_wait_for_map(get_osdmap_with_maplock()->get_epoch(), op)) { waiting_for_map.push_back(op); + op->mark_delayed("op must wait for map"); return; } op->mark_queued_for_pg(); diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 7ad5d7ca4714..81e959b40036 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1252,6 +1252,7 @@ void ReplicatedPG::do_request( << " flushes_in_progress pending " << "waiting for active on " << op << dendl; waiting_for_peered.push_back(op); + op->mark_delayed("waiting for peered"); return; } @@ -1263,6 +1264,7 @@ void ReplicatedPG::do_request( return; } else { waiting_for_peered.push_back(op); + op->mark_delayed("waiting for peered"); return; } } @@ -1276,6 +1278,7 @@ void ReplicatedPG::do_request( if (!is_active()) { dout(20) << " peered, not active, waiting for active on " << op << dendl; waiting_for_active.push_back(op); + op->mark_delayed("waiting for active"); return; } if (is_replay()) {