]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix EMetaBlob initialization
authorSage Weil <sage@newdream.net>
Thu, 8 Jan 2009 19:42:18 +0000 (11:42 -0800)
committerSage Weil <sage@newdream.net>
Thu, 8 Jan 2009 20:26:17 +0000 (12:26 -0800)
Use a single constructor.

src/mds/Server.cc
src/mds/events/EMetaBlob.h
src/mds/journal.cc

index 0c49dbd0008424c63ee199b45e242fd0d76ab048..95fad91eede31f70c61081d66d11b68925bd0494 100644 (file)
@@ -1397,6 +1397,7 @@ CInode* Server::prepare_new_inode(MDRequest *mdr, CDir *dir, inodeno_t useino)
 
 void Server::journal_allocated_inos(MDRequest *mdr, EMetaBlob *blob)
 {
+  dout(20) << "journal_allocated_inos" << dendl;
   blob->set_ino_alloc(mdr->alloc_ino,
                      mdr->used_prealloc_ino,
                      mdr->prealloc_inos,
index 939baaccc9633f377292c498dd079302c9b0327c..c02e60a462a8d82fcbb646d3de734bd708c63436 100644 (file)
@@ -327,12 +327,9 @@ private:
   off_t my_offset;
 
   // for replay, in certain cases
-  LogSegment *_segment;
+  //LogSegment *_segment;
 
-  EMetaBlob() : opened_ino(0),
-               inotablev(0), allocated_ino(0),
-               last_subtree_map(0), my_offset(0), _segment(0) { }
-  EMetaBlob(MDLog *mdl);  // defined in journal.cc
+  EMetaBlob(MDLog *mdl = 0);  // defined in journal.cc
 
   void print(ostream& out) {
     for (list<dirfrag_t>::iterator p = lump_order.begin();
index dddcd59a624a728e02b77fe97fb4bd5eb3a104fa..4dc0b80c6b1b68090e1073bc3eff09b81e936b0c 100644 (file)
@@ -275,11 +275,12 @@ void EString::replay(MDS *mds)
 // -----------------------
 // EMetaBlob
 
-EMetaBlob::EMetaBlob(MDLog *mdlog) :
-  last_subtree_map(mdlog->get_last_segment_offset()),
-  my_offset(mdlog->get_write_pos()) 
-{
-}
+EMetaBlob::EMetaBlob(MDLog *mdlog) : opened_ino(0),
+                                    inotablev(0), sessionmapv(0),
+                                    allocated_ino(0),
+                                    last_subtree_map(mdlog ? mdlog->get_last_segment_offset() : 0),
+                                    my_offset(mdlog ? mdlog->get_write_pos() : 0) //, _segment(0)
+{ }
 
 void EMetaBlob::update_segment(LogSegment *ls)
 {
@@ -310,7 +311,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg)
 {
   dout(10) << "EMetaBlob.replay " << lump_map.size() << " dirlumps" << dendl;
 
-  if (!logseg) logseg = _segment;
+  //if (!logseg) logseg = _segment;
   assert(logseg);
 
   // walk through my dirs (in order!)
@@ -496,7 +497,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg)
     CInode *in = mds->mdcache->get_inode(opened_ino);
     assert(in);
     dout(10) << "EMetaBlob.replay noting opened inode " << *in << dendl;
-    _segment->open_files.push_back(&in->xlist_open_file);
+    logseg->open_files.push_back(&in->xlist_open_file);
   }
 
   // allocated_inos