]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd_types: add ObjectModDesc into pg_log_entry_t
authorSamuel Just <sam.just@inktank.com>
Wed, 4 Dec 2013 00:23:50 +0000 (16:23 -0800)
committerSamuel Just <sam.just@inktank.com>
Wed, 22 Jan 2014 22:39:15 +0000 (14:39 -0800)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/osd_types.cc
src/osd/osd_types.h

index b668eb8e35b4ab09b3ff18962fe58e163d81dd04..dd91d660f19cd0cf9c6a6fba65e5582adcded2c3 100644 (file)
@@ -19,6 +19,7 @@ extern "C" {
 }
 #include "PG.h"
 #include "OSDMap.h"
+#include "PGBackend.h"
 
 const char *ceph_osd_flag_name(unsigned flag)
 {
@@ -2281,7 +2282,7 @@ void pg_log_entry_t::decode_with_checksum(bufferlist::iterator& p)
 
 void pg_log_entry_t::encode(bufferlist &bl) const
 {
-  ENCODE_START(8, 4, bl);
+  ENCODE_START(9, 4, bl);
   ::encode(op, bl);
   ::encode(soid, bl);
   ::encode(version, bl);
@@ -2304,6 +2305,7 @@ void pg_log_entry_t::encode(bufferlist &bl) const
     ::encode(prior_version, bl);
   ::encode(snaps, bl);
   ::encode(user_version, bl);
+  ::encode(mod_desc, bl);
   ENCODE_FINISH(bl);
 }
 
@@ -2351,6 +2353,11 @@ void pg_log_entry_t::decode(bufferlist::iterator &bl)
   else
     user_version = version.version;
 
+  if (struct_v >= 9)
+    ::decode(mod_desc, bl);
+  else
+    mod_desc.mark_unrollbackable();
+
   DECODE_FINISH(bl);
 }
 
@@ -2376,6 +2383,11 @@ void pg_log_entry_t::dump(Formatter *f) const
       f->dump_unsigned("snap", *p);
     f->close_section();
   }
+  {
+    f->open_object_section("mod_desc");
+    mod_desc.dump(f);
+    f->close_section();
+  }
 }
 
 void pg_log_entry_t::generate_test_instances(list<pg_log_entry_t*>& o)
index d537c88a39f894167b28e9c78ecc4720d9c4e318..253ff3ed6f8e25bbb980df4e077459e2b9671eeb 100644 (file)
@@ -19,6 +19,7 @@
 #include <stdio.h>
 #include <memory>
 #include <boost/scoped_ptr.hpp>
+#include <boost/optional.hpp>
 
 #include "include/rados/rados_types.hpp"
 
@@ -1732,6 +1733,9 @@ struct pg_log_entry_t {
   bool invalid_pool; // only when decoding pool-less hobject based entries
 
   uint64_t offset;   // [soft state] my offset on disk
+
+  /// describes state for a locally-rollbackable entry
+  ObjectModDesc mod_desc;
       
   pg_log_entry_t()
     : op(0), user_version(0),