]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix cached_snaps
authorSage Weil <sage@newdream.net>
Wed, 23 Jul 2008 20:00:14 +0000 (13:00 -0700)
committerSage Weil <sage@newdream.net>
Wed, 23 Jul 2008 20:00:14 +0000 (13:00 -0700)
src/mds/snap.cc
src/mds/snap.h

index 510f6fb698ea4af4ebd224cf0689aefb3e804cf4..98a007c90bd6fd50ba1051578855b54f17720dd8 100644 (file)
@@ -92,7 +92,7 @@ void SnapRealm::build_snap_set(set<snapid_t> &s, snapid_t first, snapid_t last)
  */
 const set<snapid_t>& SnapRealm::get_snaps()
 {
-  if (cached_snaps.empty()) {
+  if (cached_snaps.empty() || cached_snaps_seq < seq) {
     cached_snaps.clear();
     cached_snap_vec.clear();
     build_snap_set(cached_snaps, 0, CEPH_NOSNAP);
@@ -111,9 +111,9 @@ const set<snapid_t>& SnapRealm::get_snaps()
 
 const vector<snapid_t>& SnapRealm::get_snap_vector()
 {
-  if (cached_snap_vec.empty()) {
-    get_snaps();
+  get_snaps();
 
+  if (cached_snap_vec.empty()) {
     cached_snap_vec.resize(cached_snaps.size());
     unsigned i = 0;
     for (set<snapid_t>::reverse_iterator p = cached_snaps.rbegin();
index e8509fe031dfca5b9e77252fb7a06bfa5efd92ce..1e8ad60eea72e433df36a2754e2a9b207dd4f7e7 100644 (file)
@@ -107,6 +107,7 @@ struct SnapRealm {
   map<snapid_t,SnapRealm*> open_past_parents;  // these are explicitly pinned.
 
   // caches?
+  snapid_t cached_snaps_seq;
   set<snapid_t> cached_snaps;
   vector<snapid_t> cached_snap_vec;