From: John Spray Date: Tue, 17 Feb 2015 13:49:12 +0000 (+0000) Subject: mds: fix cephfs-table-tool reset snap X-Git-Tag: v9.0.0~246^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dea83eaa6790bf8ede42fe2db30d8f777ce43bad;p=ceph.git mds: fix cephfs-table-tool reset snap 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 --- diff --git a/src/mds/SnapServer.cc b/src/mds/SnapServer.cc index 04ab36a7fd11..29812e4c49c4 100644 --- a/src/mds/SnapServer.cc +++ b/src/mds/SnapServer.cc @@ -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::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::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; }