From: Sage Weil Date: Sun, 20 Jul 2014 21:15:41 +0000 (-0700) Subject: osdc/Filer: use lock-safe OSDMap accessors X-Git-Tag: v0.86~213^2~67 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=659909e335cac39199fdf7f5ee4b21e691d12a1d;p=ceph.git osdc/Filer: use lock-safe OSDMap accessors Signed-off-by: Sage Weil --- diff --git a/src/osdc/Filer.cc b/src/osdc/Filer.cc index 8f94a97d292..c15f438b64b 100644 --- a/src/osdc/Filer.cc +++ b/src/osdc/Filer.cc @@ -246,7 +246,9 @@ int Filer::purge_range(inodeno_t ino, // single object? easy! if (num_obj == 1) { object_t oid = file_object_t(ino, first_obj); - object_locator_t oloc = objecter->osdmap->file_to_object_locator(*layout); + const OSDMap *osdmap = objecter->get_osdmap_read(); + object_locator_t oloc = osdmap->file_to_object_locator(*layout); + objecter->put_osdmap_read(); objecter->remove(oid, oloc, snapc, mtime, flags, NULL, oncommit); return 0; } @@ -291,7 +293,9 @@ void Filer::_do_purge_range(PurgeRange *pr, int fin) int max = 10 - pr->uncommitted; while (pr->num > 0 && max > 0) { object_t oid = file_object_t(pr->ino, pr->first); - object_locator_t oloc = objecter->osdmap->file_to_object_locator(pr->layout); + const OSDMap *osdmap = objecter->get_osdmap_read(); + object_locator_t oloc = osdmap->file_to_object_locator(pr->layout); + objecter->put_osdmap_read(); objecter->remove(oid, oloc, pr->snapc, pr->mtime, pr->flags, NULL, new C_PurgeRange(this, pr)); pr->uncommitted++;