]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: make upgrade() use sequencer
authorSage Weil <sage@redhat.com>
Wed, 14 Oct 2015 14:02:55 +0000 (10:02 -0400)
committerSage Weil <sage@redhat.com>
Fri, 16 Oct 2015 18:08:43 +0000 (14:08 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PG.cc

index c0cc9e8714e2b7cd8898cc56940189332d3d92e5..8ddfd0d6e1597669d46027b3ef7653ec7cd17f80 100644 (file)
@@ -2677,13 +2677,20 @@ void PG::upgrade(ObjectStore *store)
   dirty_big_info = true;
   write_if_dirty(t);
 
-  int r = store->apply_transaction(t);
+  ceph::shared_ptr<ObjectStore::Sequencer> osr(
+    new ObjectStore::Sequencer("upgrade"));
+  int r = store->apply_transaction(osr.get(), t);
   if (r != 0) {
     derr << __func__ << ": apply_transaction returned "
         << cpp_strerror(r) << dendl;
     assert(0);
   }
   assert(r == 0);
+
+  C_SaferCond waiter;
+  if (!osr->flush_commit(&waiter)) {
+    waiter.wait();
+  }
 }
 
 #pragma GCC diagnostic pop