]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
os/bluestore: prefix omap of temp objects by real pool 29717/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Fri, 16 Aug 2019 07:28:54 +0000 (15:28 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Sat, 17 Aug 2019 00:37:32 +0000 (08:37 +0800)
commite924b8436e7c13a1d5e96f452ae70fdcaded0026
treec2fef7265dc110944dcf70313b5caaa6994c3520
parent8e0e2bbadcef75ce96c8b798f3d6611a55f25800
os/bluestore: prefix omap of temp objects by real pool

For recovery or backfill, we use temp object at destination
if the whole object context can not sent in one shot.
And since https://github.com/ceph/ceph/pull/29292, we now segregate
omap keys by object's binding pool.
However, https://github.com/ceph/ceph/pull/29292 does not
work well for recovery or backfill process that need
to manipulate temp objects because we always (deliberately)
assign a negative pool id for each temp object which is
(obviously) different from the corresponding target object,
and we do not fix it when trying to rename the temp object
back to the target object at the end of recovery/backfill,
as a result of which we totally lose track of the omap
portion of the recovered object.

Fix by prefixing all omap-related stuff of temp objects
by using its real(pg's) pool.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h
src/osd/osd_types.h