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;
}