From: Samuel Just Date: Fri, 2 Aug 2013 18:58:52 +0000 (-0700) Subject: PG: set !flushed in Reset() X-Git-Tag: v0.61.8~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a9a370be2d8155b696ebe2866febb0571da5740f;p=ceph.git 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 Reviewed-by: Sage Weil (cherry picked from commit 9e7d6d547e0e8a6db6ba611882afa9bf74ea0195) --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index b547840a0f26..3b06d89be4b3 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(flush_trigger)); on_safe->push_back(new ContainerContext(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(); }