From 485daaba84a8be50418ca65e8b11520e8db93135 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 9 Nov 2014 07:43:01 -0800 Subject: [PATCH] osdc/Objecter: factor out _send_op_account() Signed-off-by: Sage Weil --- src/osdc/Objecter.cc | 57 ++++++++++++++++++++++++-------------------- src/osdc/Objecter.h | 1 + 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index b3c5bbb1e543f..b4212bfcceb6d 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1814,33 +1814,8 @@ ceph_tid_t Objecter::_op_submit_with_budget(Op *op, RWLock::Context& lc, int *ct return tid; } -ceph_tid_t Objecter::_op_submit(Op *op, RWLock::Context& lc) +void Objecter::_send_op_account(Op *op) { - assert(rwlock.is_locked()); - - ldout(cct, 10) << __func__ << " op " << op << dendl; - - // pick target - assert(op->session == NULL); - OSDSession *s = NULL; - - bool const check_for_latest_map = _calc_target(&op->target) == RECALC_OP_TARGET_POOL_DNE; - - // Try to get a session, including a retry if we need to take write lock - int r = _get_session(op->target.osd, &s, lc); - if (r == -EAGAIN) { - assert(s == NULL); - lc.promote(); - r = _get_session(op->target.osd, &s, lc); - } - assert(r == 0); - assert(s); // may be homeless - - // We may need to take wlock if we will need to _set_op_map_check later. - if (check_for_latest_map && !lc.is_wlocked()) { - lc.promote(); - } - inflight_ops.inc(); // add to gather set(s) @@ -1899,6 +1874,36 @@ ceph_tid_t Objecter::_op_submit(Op *op, RWLock::Context& lc) if (code) logger->inc(code); } +} + +ceph_tid_t Objecter::_op_submit(Op *op, RWLock::Context& lc) +{ + assert(rwlock.is_locked()); + + ldout(cct, 10) << __func__ << " op " << op << dendl; + + // pick target + assert(op->session == NULL); + OSDSession *s = NULL; + + bool const check_for_latest_map = _calc_target(&op->target) == RECALC_OP_TARGET_POOL_DNE; + + // Try to get a session, including a retry if we need to take write lock + int r = _get_session(op->target.osd, &s, lc); + if (r == -EAGAIN) { + assert(s == NULL); + lc.promote(); + r = _get_session(op->target.osd, &s, lc); + } + assert(r == 0); + assert(s); // may be homeless + + // We may need to take wlock if we will need to _set_op_map_check later. + if (check_for_latest_map && !lc.is_wlocked()) { + lc.promote(); + } + + _send_op_account(op); // send? ldout(cct, 10) << "_op_submit oid " << op->target.base_oid diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 8fb8812c51fbe..6d886b91a7fe8 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -1622,6 +1622,7 @@ public: MOSDOp *_prepare_osd_op(Op *op); void _send_op(Op *op, MOSDOp *m = NULL); + void _send_op_account(Op *op); void _cancel_linger_op(Op *op); void finish_op(OSDSession *session, ceph_tid_t tid); void _finish_op(Op *op); -- 2.39.5