]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: implement pg merge
authorSage Weil <sage@redhat.com>
Fri, 6 Apr 2018 15:26:52 +0000 (10:26 -0500)
committerSage Weil <sage@redhat.com>
Fri, 7 Sep 2018 17:09:05 +0000 (12:09 -0500)
commitaca0dc1caa5323a3f98050f00c3fdcf5f167582c
treec1708d6c360d040100dc62b98db9286ccf0d1ec2
parent24fd8d6573c8e74a80cbddfa722b749595331da1
osd: implement pg merge

- Vevamps the split tracking infrastructure, and adds new tracking for
upcoming merges in consume_map.  These are now unified into the same
identify_ method.  these consume the new pg_num change tracking
instructure we just added in the prior commit.
- PGs that are about to merge have a new wait infrastructure, since all
sources and the target have to reach the target epoch before the merge
can happen.
- If one of the sources for a merge does not exist, we create an empty
dummy PG to merge with.  The implies that the resulting merged PG will
be incomplete (and mostly useless), but it unifies the code paths.
- The actual merge (PG::merge_from) happens in advance_pg().

Fixes: http://tracker.ceph.com/issues/85
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc
src/osd/OSD.h
src/osd/PG.h