From: Sage Weil Date: Tue, 30 Dec 2014 01:32:54 +0000 (-0800) Subject: osd: fix object_copy_data_t compat encoding X-Git-Tag: v0.92~72^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=488355cc5ad703b4e301d242cabcea5bb19b843e;p=ceph.git osd: fix object_copy_data_t compat encoding If the omap_data map is empty, we want an empty bufferlist. Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index bedbf98a48e3..55c3d73e8503 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -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 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 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)