From: Ilya Dryomov Date: Wed, 22 Jan 2014 15:33:39 +0000 (+0200) Subject: MOSDMap: reencode maps if target doesn't have OSDMAP_ENC X-Git-Tag: v0.78~288^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F1126%2Fhead;p=ceph.git MOSDMap: reencode maps if target doesn't have OSDMAP_ENC Reencode both full and incremental maps if target doesn't know how to decode OSDMAP_ENC maps (CEPH_FEATURE_OSDMAP_ENC bit is not set). This fixes a compatibility bug that was introduced in 3d7c69fb0986 ("OSDMap: add a CEPH_FEATURE_OSDMAP_ENC feature, and use new encoding"). Signed-off-by: Ilya Dryomov --- diff --git a/src/messages/MOSDMap.h b/src/messages/MOSDMap.h index cd4a9519e1d5..7ed601c6b365 100644 --- a/src/messages/MOSDMap.h +++ b/src/messages/MOSDMap.h @@ -86,11 +86,12 @@ public: ::encode(fsid, payload); if ((features & CEPH_FEATURE_PGID64) == 0 || (features & CEPH_FEATURE_PGPOOL3) == 0 || - (features & CEPH_FEATURE_OSDENC) == 0) { + (features & CEPH_FEATURE_OSDENC) == 0 || + (features & CEPH_FEATURE_OSDMAP_ENC) == 0) { if ((features & CEPH_FEATURE_PGID64) == 0 || (features & CEPH_FEATURE_PGPOOL3) == 0) header.version = 1; // old old_client version - else + else if ((features & CEPH_FEATURE_OSDENC) == 0) header.version = 2; // old pg_pool_t // reencode maps using old format