From fe03ad28011dde1d0e14a9f3cf33a398b270d258 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 5 Dec 2013 22:11:41 -0800 Subject: [PATCH] osd: queue pg deletion after on_removal txn The removal is normally so slow that these don't really race, but they could. Signed-off-by: Sage Weil --- src/osd/OSD.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index b6c52fb33ed6c..32a548fbe03fe 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6672,6 +6672,13 @@ void OSD::_remove_pg(PG *pg) service.cancel_pending_splits_for_parent(pg->info.pgid); + store->queue_transaction( + pg->osr.get(), rmt, + new ObjectStore::C_DeleteTransactionHolder< + SequencerRef>(rmt, pg->osr), + new ContainerContext< + SequencerRef>(pg->osr)); + DeletingStateRef deleting = service.deleting_pgs.lookup_or_create( pg->info.pgid, make_pair( @@ -6680,13 +6687,6 @@ void OSD::_remove_pg(PG *pg) ); remove_wq.queue(make_pair(PGRef(pg), deleting)); - store->queue_transaction( - pg->osr.get(), rmt, - new ObjectStore::C_DeleteTransactionHolder< - SequencerRef>(rmt, pg->osr), - new ContainerContext< - SequencerRef>(pg->osr)); - // remove from map pg_map.erase(pg->info.pgid); pg->put("PGMap"); // since we've taken it out of map -- 2.39.5