From 8dc6c50580f5d80e85a7a74c0a82f49a41d5f097 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Mon, 20 Jul 2015 13:46:12 +0800 Subject: [PATCH] osd: add some mark_delayed for some delay events. Signed-off-by: Jianpeng Ma --- src/osd/OSD.cc | 3 ++- src/osd/PG.cc | 2 ++ src/osd/ReplicatedPG.cc | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) 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()) { -- 2.47.3