]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc/Filer: use lock-safe OSDMap accessors
authorSage Weil <sage@redhat.com>
Sun, 20 Jul 2014 21:15:41 +0000 (14:15 -0700)
committerJohn Spray <john.spray@redhat.com>
Mon, 25 Aug 2014 00:34:01 +0000 (01:34 +0100)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osdc/Filer.cc

index 8f94a97d2922ff1d504a3f7d6d725100d48a4106..c15f438b64b00605975cad57f2f789f75e19a01c 100644 (file)
@@ -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++;