]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: dispatch_context and queue split finish on early bail-out 32942/head
authorSage Weil <sage@redhat.com>
Tue, 28 Jan 2020 19:33:49 +0000 (13:33 -0600)
committerSage Weil <sage@redhat.com>
Tue, 28 Jan 2020 19:33:53 +0000 (13:33 -0600)
commit14c4dbb03fe3c7fb4a0a6fa40dcb89e89fb66b3c
tree5e853e5d7f6ad6c105c57710426cac221cc11e29
parenta515bac86a2636a704e33f17cd4e7c7a02610610
osd: dispatch_context and queue split finish on early bail-out

If we bail out of advance_pg early because there is an upcoming merge, we
still need to dispatch_context() on rctx before we drop the PG lock.  And
the rctx that we submit needs to include the on_applied finisher comit
to call _finish_splits.

This is noticeable (at least) when there is a split and merge that are
both known.  When we process the split, the new child is added to new_pgs.
When we get to the merge epoch, we stop early and take the bail-out
path.

Fix by adding a dispatch_context call for this path.  And further make sure
that both dispatch_context callers in this function queue up the
new_pgs event.

Fixes: https://tracker.ceph.com/issues/43825
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc