]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix object_copy_data_t compat encoding 3294/head
authorSage Weil <sage@redhat.com>
Tue, 30 Dec 2014 01:32:54 +0000 (17:32 -0800)
committerSage Weil <sage@redhat.com>
Mon, 5 Jan 2015 22:37:33 +0000 (14:37 -0800)
If the omap_data map is empty, we want an empty bufferlist.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/osd_types.cc

index bedbf98a48e39b7fec92d7a4d96873f37f597f8f..55c3d73e85035094ed8ec65aa51ad58a8111cc93 100644 (file)
@@ -3318,7 +3318,10 @@ void object_copy_data_t::encode_classic(bufferlist& bl) const
   ::encode(mtime, bl);
   ::encode(attrs, bl);
   ::encode(data, bl);
-  bl.append(omap_data);
+  if (omap_data.length())
+    bl.append(omap_data);
+  else
+    ::encode((__u32)0, bl);
   ::encode(cursor, bl);
 }
 
@@ -3332,7 +3335,8 @@ void object_copy_data_t::decode_classic(bufferlist::iterator& bl)
     map<string,bufferlist> omap;
     ::decode(omap, bl);
     omap_data.clear();
-    ::encode(omap, omap_data);
+    if (!omap.empty())
+      ::encode(omap, omap_data);
   }
   ::decode(cursor, bl);
   flags = 0;
@@ -3348,7 +3352,10 @@ void object_copy_data_t::encode(bufferlist& bl, uint64_t features) const
     ::encode((__u32)0, bl);  // was category; no longer used
     ::encode(attrs, bl);
     ::encode(data, bl);
-    bl.append(omap_data);
+    if (omap_data.length())
+      bl.append(omap_data);
+    else
+      ::encode((__u32)0, bl);
     ::encode(cursor, bl);
     ::encode(omap_header, bl);
     ::encode(snaps, bl);
@@ -3393,7 +3400,8 @@ void object_copy_data_t::decode(bufferlist::iterator& bl)
       map<string,bufferlist> omap;
       ::decode(omap, bl);
       omap_data.clear();
-      ::encode(omap, omap_data);
+      if (!omap.empty())
+       ::encode(omap, omap_data);
     }
     ::decode(cursor, bl);
     if (struct_v >= 2)