From 86baf2d38170ef19de2dd5e9ce3f280237d8474d Mon Sep 17 00:00:00 2001 From: David Zafman Date: Wed, 12 Nov 2014 21:14:11 -0800 Subject: [PATCH] ceph_objectstore_tool: Clear ...INCOMPAT_SHARDS from feature if exporting replicated pg Don't require importing OSD to have shards feature for replicated pg http://tracker.ceph.com/issues/10077 Fixes: #10077 Signed-off-by: David Zafman --- src/tools/ceph_objectstore_tool.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index b3c854b8013d4..de2b5d895acd9 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -800,6 +800,10 @@ int do_export(ObjectStore *fs, coll_t coll, spg_t pgid, pg_info_t &info, write_super(); pg_begin pgb(pgid, superblock); + // Special case: If replicated pg don't require the importing OSD to have shard feature + if (pgid.is_no_shard()) { + pgb.superblock.compat_features.incompat.remove(CEPH_OSD_FEATURE_INCOMPAT_SHARDS); + } ret = write_section(TYPE_PG_BEGIN, pgb, file_fd); if (ret) return ret; @@ -1359,6 +1363,11 @@ int do_import(ObjectStore *store, OSDSuperblock& sb) if (debug) { cerr << "Exported features: " << pgb.superblock.compat_features << std::endl; } + + // Special case: Old export has SHARDS incompat feature on replicated pg, remove it + if (pgid.is_no_shard()) + pgb.superblock.compat_features.incompat.remove(CEPH_OSD_FEATURE_INCOMPAT_SHARDS); + if (sb.compat_features.compare(pgb.superblock.compat_features) == -1) { cerr << "Export has incompatible features set " << pgb.superblock.compat_features << std::endl; -- 2.39.5