From 488355cc5ad703b4e301d242cabcea5bb19b843e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 29 Dec 2014 17:32:54 -0800 Subject: [PATCH] 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 --- src/osd/osd_types.cc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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) -- 2.47.3