]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: update log segment tid list on journaled tableclient ack
authorSage Weil <sage@newdream.net>
Mon, 20 Oct 2008 20:35:01 +0000 (13:35 -0700)
committerSage Weil <sage@newdream.net>
Mon, 20 Oct 2008 20:39:53 +0000 (13:39 -0700)
src/mds/MDSTableClient.cc
src/mds/MDSTableClient.h
src/mds/journal.cc

index 7667aafa238518a8940b67c6d043701316bf6c7b..4041992b078bc4ef410601645d96b71ca031a06e 100644 (file)
@@ -153,6 +153,17 @@ void MDSTableClient::commit(version_t tid, LogSegment *ls)
 
 // recovery
 
+void MDSTableClient::got_journaled_agree(version_t tid, LogSegment *ls)
+{
+  ls->pending_commit_tids[table].insert(tid);
+  pending_commit[tid] = ls;
+}
+void MDSTableClient::got_journaled_ack(version_t tid)
+{
+  if (pending_commit.count(tid))
+    pending_commit[tid]->pending_commit_tids[table].erase(tid);
+  pending_commit.erase(tid);
+}
 
 void MDSTableClient::finish_recovery()
 {
index 64d2dbbb301c8a8e9cd4cbc260c4a17d38c2971a..2f0bb2d78f37960744a39f8b2ef9762a2553625a 100644 (file)
@@ -73,12 +73,9 @@ public:
   void resend_commits();
 
   // for recovery (by me)
-  void got_journaled_agree(version_t tid, LogSegment *ls) {
-    pending_commit[tid] = ls;
-  }
-  void got_journaled_ack(version_t tid) {
-    pending_commit.erase(tid);
-  }
+  void got_journaled_agree(version_t tid, LogSegment *ls);
+  void got_journaled_ack(version_t tid);
+
   bool has_committed(version_t tid) {
     return pending_commit.count(tid) == 0;
   }
index 32bbcac7ae5f0a967263d63f47c6cac3332d823b..173bcf5e41719b69f232b41cbed76b684c9833a1 100644 (file)
@@ -483,7 +483,6 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg)
             << " transaction " << p->second << dendl;
     MDSTableClient *client = mds->get_table_client(p->first);
     client->got_journaled_agree(p->second, logseg);
-    logseg->pending_commit_tids[p->first].insert(p->second);
   }
 
   // allocated_inos