From 7f3165b52c7d33eb4417bed5d0f64a5be91f8d36 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Wed, 18 Sep 2013 17:49:17 -0700 Subject: ReplicatedPG: use our already-found iterator instead of going back into map We have an iterator pointing at the element we want; no need to search the map again in order to grab the element or remove it. Signed-off-by: Greg Farnum --- src/osd/ReplicatedPG.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index c826c38c145..88dc150448b 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -5468,10 +5468,10 @@ void ReplicatedPG::kick_object_context_blocked(ObjectContextRef obc) return; } - list& ls = waiting_for_blocked_object[soid]; + list& ls = p->second; dout(10) << __func__ << " " << soid << " requeuing " << ls.size() << " requests" << dendl; requeue_ops(ls); - waiting_for_blocked_object.erase(soid); + waiting_for_blocked_object.erase(p); } SnapSetContext *ReplicatedPG::create_snapset_context(const object_t& oid) -- cgit v1.2.1 From 7bf8cb7d9fa0df8440346237978197281b0ba4b5 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Tue, 24 Sep 2013 13:02:29 -0700 Subject: ReplicatedPG: remove useless pcop param from start_copy Signed-off-by: Greg Farnum --- src/osd/ReplicatedPG.cc | 5 ++--- src/osd/ReplicatedPG.h | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 88dc150448b..41ca7e289e5 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -3764,7 +3764,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) result = -EINVAL; break; } - result = start_copy(ctx, src, src_oloc, src_version, &ctx->copy_op); + result = start_copy(ctx, src, src_oloc, src_version); if (result < 0) goto fail; result = -EINPROGRESS; @@ -4377,8 +4377,7 @@ struct C_Copyfrom : public Context { }; int ReplicatedPG::start_copy(OpContext *ctx, - hobject_t src, object_locator_t oloc, version_t version, - CopyOpRef *pcop) + hobject_t src, object_locator_t oloc, version_t version) { const hobject_t& dest = ctx->obs->oi.soid; dout(10) << __func__ << " " << dest << " ctx " << ctx diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index e24592e932f..c10cc0c9b45 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -724,8 +724,7 @@ protected: // -- copyfrom -- map copy_ops; - int start_copy(OpContext *ctx, hobject_t src, object_locator_t oloc, version_t version, - CopyOpRef *pcop); + int start_copy(OpContext *ctx, hobject_t src, object_locator_t oloc, version_t version); void process_copy_chunk(hobject_t oid, tid_t tid, int r); void _write_copy_chunk(CopyOpRef cop, ObjectStore::Transaction *t); void _copy_some(OpContext *ctx, CopyOpRef cop); -- cgit v1.2.1 From c8054ac57b9e397497aba6cbb0fa94f911840ad1 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Mon, 30 Sep 2013 14:04:54 -0700 Subject: ReplicatedPG: remove unused CopyOp::waiting member, rename function for accuracy We never placed any ops here, and so we weren't ever requeuing any ops. Signed-off-by: Greg Farnum --- src/osd/ReplicatedPG.cc | 14 ++++---------- src/osd/ReplicatedPG.h | 4 +--- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 41ca7e289e5..5e099c0853d 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -4580,19 +4580,13 @@ void ReplicatedPG::cancel_copy(CopyOpRef cop) delete ctx; } -void ReplicatedPG::requeue_cancel_copy_ops(bool requeue) +void ReplicatedPG::cancel_copy_ops() { dout(10) << __func__ << dendl; for (map::iterator p = copy_ops.begin(); p != copy_ops.end(); copy_ops.erase(p++)) { - // requeue initiating copy *and* any subsequent waiters - CopyOpRef cop = p->second; - if (requeue) { - cop->waiting.push_front(cop->ctx->op); - requeue_ops(cop->waiting); - } - cancel_copy(cop); + cancel_copy(p->second); } } @@ -7332,7 +7326,7 @@ void ReplicatedPG::on_shutdown() deleting = true; unreg_next_scrub(); - requeue_cancel_copy_ops(false); + cancel_copy_ops(); apply_and_flush_repops(false); context_registry_on_change(); @@ -7369,7 +7363,7 @@ void ReplicatedPG::on_change(ObjectStore::Transaction *t) context_registry_on_change(); - requeue_cancel_copy_ops(is_primary()); + cancel_copy_ops(); // requeue object waiters if (is_primary()) { diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index c10cc0c9b45..abee57ffe7d 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -102,8 +102,6 @@ public: tid_t objecter_tid; - list waiting; - object_copy_cursor_t cursor; uint64_t size; utime_t mtime; @@ -730,7 +728,7 @@ protected: void _copy_some(OpContext *ctx, CopyOpRef cop); int finish_copy(OpContext *ctx); void cancel_copy(CopyOpRef cop); - void requeue_cancel_copy_ops(bool requeue=true); + void cancel_copy_ops(); friend class C_Copyfrom; -- cgit v1.2.1