From 5328f0ae0126eeb5265c0b089ea8fd7a418e4f50 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 20 Jul 2014 13:38:38 -0700 Subject: [PATCH] client/SyntheticClient: use lock safe OSDMap accessors Signed-off-by: Sage Weil --- src/client/SyntheticClient.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/client/SyntheticClient.cc b/src/client/SyntheticClient.cc index a509f7e3b68..7b4f4a41ed7 100644 --- a/src/client/SyntheticClient.cc +++ b/src/client/SyntheticClient.cc @@ -1722,7 +1722,9 @@ int SyntheticClient::dump_placement(string& fn) { for (vector::iterator i = extents.begin(); i != extents.end(); ++i) { - int osd = client->osdmap->get_pg_acting_primary(client->osdmap->object_locator_to_pg(i->oid, i->oloc)); + const OSDMap *osdmap = client->objecter->get_osdmap_read(); + int osd = osdmap->get_pg_acting_primary(osdmap->object_locator_to_pg(i->oid, i->oloc)); + client->objecter->put_osdmap_read(); // run through all the buffer extents for (vector >::iterator j = i->buffer_extents.begin(); @@ -1999,11 +2001,15 @@ int SyntheticClient::overload_osd_0(int n, int size, int wrsize) { // See what the primary is for the first object in this file. -int SyntheticClient::check_first_primary(int fh) { +int SyntheticClient::check_first_primary(int fh) +{ vector extents; client->enumerate_layout(fh, extents, 1, 0); - return client->osdmap->get_pg_acting_primary(client->osdmap->object_locator_to_pg(extents.begin()->oid, - extents.begin()->oloc)); + const OSDMap *osdmap = client->objecter->get_osdmap_read(); + int primary = osdmap->get_pg_acting_primary(osdmap->object_locator_to_pg(extents.begin()->oid, + extents.begin()->oloc)); + client->objecter->put_osdmap_read(); + return primary; } int SyntheticClient::rm_file(string& fn) -- 2.47.3