summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-08-02 11:58:52 -0700
committerSamuel Just <sam.just@inktank.com>2013-08-08 13:14:49 -0700
commita9a370be2d8155b696ebe2866febb0571da5740f (patch)
tree002b3d5ae00ee5676804e7d9f5d31ae478d827ec
parent65bfa4941f983c988837cd010f731966ff53fd19 (diff)
downloadceph-a9a370be2d8155b696ebe2866febb0571da5740f.tar.gz
PG: set !flushed in Reset()
Otherwise, we might serve a pull before we start_flush in the ReplicaActive constructor. Fixes: #5799 Signed-off-by: Samuel Just <sam.just@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com> (cherry picked from commit 9e7d6d547e0e8a6db6ba611882afa9bf74ea0195)
-rw-r--r--src/osd/PG.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/osd/PG.cc b/src/osd/PG.cc
index b547840a0f2..3b06d89be4b 100644
--- a/src/osd/PG.cc
+++ b/src/osd/PG.cc
@@ -5004,7 +5004,7 @@ void PG::start_flush(ObjectStore::Transaction *t,
FlushStateRef flush_trigger(
new FlushState(this, get_osdmap()->get_epoch()));
t->nop();
- flushed = false;
+ assert(!flushed);
on_applied->push_back(new ContainerContext<FlushStateRef>(flush_trigger));
on_safe->push_back(new ContainerContext<FlushStateRef>(flush_trigger));
DeletingStateRef del = osd->deleting_pgs.lookup(info.pgid);
@@ -5953,6 +5953,7 @@ PG::RecoveryState::Reset::Reset(my_context ctx)
state_name = "Reset";
context< RecoveryMachine >().log_enter(state_name);
PG *pg = context< RecoveryMachine >().pg;
+ pg->flushed = false;
pg->set_last_peering_reset();
}