diff options
author | Samuel Just <sam.just@inktank.com> | 2013-02-12 13:08:36 -0800 |
---|---|---|
committer | Samuel Just <sam.just@inktank.com> | 2013-02-20 13:29:19 -0800 |
commit | 22ec5bc315024c00e5f50c513658de9e779c929c (patch) | |
tree | e4972c00f7ba32a36659c0cf59dbe5b3acc54b82 | |
parent | 359c0dfd298cb1965ebdb6a0ff49e619ed442b04 (diff) | |
download | ceph-22ec5bc315024c00e5f50c513658de9e779c929c.tar.gz |
PG: check object_contexts on flushed
At FlushedEvt, all outstanding io should be complete and
the object_contexts map should be empty.
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r-- | src/osd/PG.cc | 1 | ||||
-rw-r--r-- | src/osd/PG.h | 1 | ||||
-rw-r--r-- | src/osd/ReplicatedPG.cc | 5 | ||||
-rw-r--r-- | src/osd/ReplicatedPG.h | 1 |
4 files changed, 8 insertions, 0 deletions
diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 3c10230c41a..09d27a6a037 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -5436,6 +5436,7 @@ PG::RecoveryState::Reset::react(const FlushedEvt&) { PG *pg = context< RecoveryMachine >().pg; pg->flushed = true; + pg->on_flushed(); pg->requeue_ops(pg->waiting_for_active); return discard_event(); } diff --git a/src/osd/PG.h b/src/osd/PG.h index ec3d4664a90..39bc6b5ab98 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -1916,6 +1916,7 @@ public: virtual void on_role_change() = 0; virtual void on_change() = 0; virtual void on_activate() = 0; + virtual void on_flushed() = 0; virtual void on_shutdown() = 0; virtual void remove_watchers_and_notifies() = 0; diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 23174b937dd..ffa1a93845b 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6256,6 +6256,11 @@ void ReplicatedPG::on_shutdown() remove_watchers_and_notifies(); } +void ReplicatedPG::on_flushed() +{ + assert(object_contexts.empty()); +} + void ReplicatedPG::on_activate() { for (unsigned i = 1; i<acting.size(); i++) { diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index 79b11bd4561..848cd1412b7 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -1108,6 +1108,7 @@ public: void on_role_change(); void on_change(); void on_activate(); + void on_flushed(); void on_removal(); void on_shutdown(); }; |