]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
tools/ceph_objectstore_tool: fix 'dup' unable to duplicate meta PG 17572/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Wed, 6 Sep 2017 09:31:16 +0000 (17:31 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Thu, 7 Sep 2017 12:52:51 +0000 (20:52 +0800)
commitaf2c4847e42945a878e2864319185d795b0664a5
tree771e17730864c18d2f37c342e73886e30f543275
parentaa27ac779144e62a7ff1b6456ebef3e027bc35c7
tools/ceph_objectstore_tool: fix 'dup' unable to duplicate meta PG

Recently we plan to bring a Jewel cluster into Luminous.
After that is done, which turns out to be a big success,
we then try to transform all FileStore osds into BlueStore ones
offline but with no luck. The ceph_objectstore_tool keeps complaining:
--------------------------------------------------------------------
dup from filestore: /var/lib/ceph/osd/ceph-20.old
      to bluestore: /var/lib/ceph/osd/ceph-20
fsid d444b253-337d-4d15-9d63-86ae134ec9ac
65 collections
1/65 meta
cannot get bit count for collection meta: (61) No data available
--------------------------------------------------------------------

The root cause is that for FileStore Luminous will always try to rewrite
pg "bits" as a file attribute on "Load" if that is not available.
But since meta pg is never loaded (we skip it during OSD::load_pgs()),
we actually never get the chance to do so; hence making the
dup method from ceph_objectstore_tool very unhappy since it always
expects to see such a attribute from underlying store.

Fix the above problem by manually skipping loading the "bits" attribute
if underlying OS is FileStore for dup.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/osd/PG.cc
src/tools/ceph_objectstore_tool.cc