From: Sage Weil Date: Sun, 20 Jul 2014 20:38:38 +0000 (-0700) Subject: client/SyntheticClient: use lock safe OSDMap accessors X-Git-Tag: v0.86~213^2~71 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5328f0ae0126eeb5265c0b089ea8fd7a418e4f50;p=ceph.git client/SyntheticClient: use lock safe OSDMap accessors Signed-off-by: Sage Weil --- diff --git a/src/client/SyntheticClient.cc b/src/client/SyntheticClient.cc index a509f7e3b684..7b4f4a41ed70 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)