]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/SnapServer: use lock safe OSDMap accessors
authorSage Weil <sage@redhat.com>
Sun, 20 Jul 2014 21:11:49 +0000 (14:11 -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/mds/SnapServer.cc

index 561a006b2f16fc12977c3c82e8cdf17317194bfd..adbccd037294cf7994bc08fc941c49be83f1a91e 100644 (file)
@@ -15,6 +15,7 @@
 #include "SnapServer.h"
 #include "MDS.h"
 #include "osd/OSDMap.h"
+#include "osdc/Objecter.h"
 #include "mon/MonClient.h"
 
 #include "include/types.h"
@@ -201,11 +202,12 @@ void SnapServer::check_osd_map(bool force)
   map<int, vector<snapid_t> > all_purge;
   map<int, vector<snapid_t> > all_purged;
 
+  const OSDMap *osdmap = mds->objecter->get_osdmap_read();
   for (map<int, set<snapid_t> >::iterator p = need_to_purge.begin();
        p != need_to_purge.end();
        ++p) {
     int id = p->first;
-    const pg_pool_t *pi = mds->osdmap->get_pg_pool(id);
+    const pg_pool_t *pi = osdmap->get_pg_pool(id);
     for (set<snapid_t>::iterator q = p->second.begin();
         q != p->second.end();
         ++q) {
@@ -217,6 +219,7 @@ void SnapServer::check_osd_map(bool force)
       }
     }
   }
+  mds->objecter->put_osdmap_read();
 
   if (!all_purged.empty()) {
     // prepare to remove from need_to_purge list