]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: do final pg delete transaction on pg sequencer
authorSage Weil <sage@redhat.com>
Thu, 8 Mar 2018 17:50:44 +0000 (11:50 -0600)
committerSage Weil <sage@redhat.com>
Wed, 4 Apr 2018 13:26:58 +0000 (08:26 -0500)
Simpler, cleaner.  Also, this way we flush before returning.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PG.cc

index a7e5a4a4939053cd534afe4023c4596debb3cdf9..c0d608dbda329ff181b6cec304b25ac893086431 100644 (file)
@@ -6533,24 +6533,14 @@ void PG::_delete_some()
     {
       ObjectStore::Transaction t;
       PGRef pgref(this);
+      PGLog::clear_info_log(info.pgid, &t);
+      t.remove_collection(coll);
       t.register_on_commit(new ContainerContext<PGRef>(pgref));
       t.register_on_applied(new ContainerContext<PGRef>(pgref));
       osd->store->queue_transaction(ch, std::move(t));
     }
     ch->flush();
 
-    ObjectStore::Transaction t;
-    PGLog::clear_info_log(info.pgid, &t);
-    t.remove_collection(coll);
-    PGRef pgref(this);
-    // keep pg ref around until txn completes to avoid any issues
-    // with Sequencer lifecycle (seen w/ filestore).
-    t.register_on_commit(new ContainerContext<PGRef>(pgref));
-    t.register_on_applied(new ContainerContext<PGRef>(pgref));
-    int r = osd->store->queue_transaction(
-      osd->meta_ch, std::move(t));
-    assert(r == 0);
-
     osd->finish_pg_delete(this, pool.info.get_pg_num());
     deleted = true;