]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix cephfs-table-tool reset snap 3751/head
authorJohn Spray <john.spray@redhat.com>
Tue, 17 Feb 2015 13:49:12 +0000 (13:49 +0000)
committerJohn Spray <john.spray@redhat.com>
Tue, 17 Feb 2015 14:23:22 +0000 (14:23 +0000)
This relies on being able to instantiate a SnapServer
without an MDS and call reset_table on it.  Recent
snapshot changes violated that.

Signed-off-by: John Spray <john.spray@redhat.com>
src/mds/SnapServer.cc

index 04ab36a7fd11c9a0251734b39679ab712734bef8..29812e4c49c40adaea4855f8e2605ae757abe16d 100644 (file)
@@ -39,19 +39,21 @@ void SnapServer::reset_state()
   need_to_purge.clear();
 
   // find any removed snapshot in data pools
-  snapid_t first_free = 0;
-  const OSDMap *osdmap = mds->objecter->get_osdmap_read();
-  for (set<int64_t>::const_iterator p = mds->mdsmap->get_data_pools().begin();
-       p != mds->mdsmap->get_data_pools().end();
-       ++p) {
-    const pg_pool_t *pi = osdmap->get_pg_pool(*p);
-    if (!pi->removed_snaps.empty() &&
-        pi->removed_snaps.range_end() > first_free)
-      first_free = pi->removed_snaps.range_end();
+  if (mds) {  // only if I'm running in a live MDS
+    snapid_t first_free = 0;
+    const OSDMap *osdmap = mds->objecter->get_osdmap_read();
+    for (set<int64_t>::const_iterator p = mds->mdsmap->get_data_pools().begin();
+         p != mds->mdsmap->get_data_pools().end();
+         ++p) {
+      const pg_pool_t *pi = osdmap->get_pg_pool(*p);
+      if (!pi->removed_snaps.empty() &&
+          pi->removed_snaps.range_end() > first_free)
+        first_free = pi->removed_snaps.range_end();
+    }
+    mds->objecter->put_osdmap_read();
+    if (first_free > last_snap)
+      last_snap = first_free;
   }
-  mds->objecter->put_osdmap_read();
-  if (first_free > last_snap)
-    last_snap = first_free;
 }