]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: journal projected inode values by default
authorSage Weil <sage@newdream.net>
Sat, 4 Apr 2009 22:32:43 +0000 (15:32 -0700)
committerSage Weil <sage@newdream.net>
Sat, 4 Apr 2009 22:32:43 +0000 (15:32 -0700)
There was a bug in here that was journaling _old_ inode values.  Doh!

src/mds/events/EMetaBlob.h

index 569d1f8940cb51673b0352906226413efe71a9c8..6c94c724d9d325a598c57685c8c96d3d3f40d0ae 100644 (file)
@@ -506,6 +506,10 @@ private:
     in->last_journaled = my_offset;
     //cout << "journaling " << in->inode.ino << " at " << my_offset << std::endl;
 
+    if (!pi) pi = in->get_projected_inode();
+    if (!pdft) pdft = &in->dirfragtree;
+    if (!px) px = &in->xattrs;
+
     bufferlist snapbl;
     if (psnapbl)
       snapbl = *psnapbl;
@@ -517,8 +521,7 @@ private:
       lump.get_dfull().push_front(fullbit(dn->get_name(), 
                                          dn->first, dn->last,
                                          dn->get_projected_version(), 
-                                         in->inode, in->dirfragtree,
-                                         px ? *px : in->xattrs,
+                                         *pi, *pdft, *px,
                                          in->symlink, snapbl,
                                          dirty));
       if (pi) lump.get_dfull().front().inode = *pi;
@@ -527,8 +530,7 @@ private:
       lump.get_dfull().push_back(fullbit(dn->get_name(), 
                                         dn->first, dn->last,
                                         dn->get_projected_version(),
-                                        in->inode, in->dirfragtree,
-                                        px ? *px : in->xattrs,
+                                         *pi, *pdft, *px,
                                         in->symlink, snapbl,
                                         dirty));
       if (pi) lump.get_dfull().back().inode = *pi;
@@ -559,6 +561,10 @@ private:
     in->last_journaled = my_offset;
     //cout << "journaling " << in->inode.ino << " at " << my_offset << std::endl;
 
+    if (!pi) pi = in->get_projected_inode();
+    if (!pdft) pdft = &in->dirfragtree;
+    if (!px) px = &in->xattrs;
+
     bufferlist snapbl;
     if (psnapbl)
       snapbl = *psnapbl;
@@ -567,12 +573,11 @@ private:
 
     nstring empty;
     root = new fullbit(empty,
-             in->first, in->last,
-             0,
-             in->inode, in->dirfragtree,
-             px ? *px : in->xattrs,
-             in->symlink, snapbl,
-             dirty);
+                      in->first, in->last,
+                      0,
+                      *pi, *pdft, *px,
+                      in->symlink, snapbl,
+                      dirty);
     return &root->inode;
   }