]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd: requeue PG when we skip handling a peering event
authorSage Weil <sage@redhat.com>
Thu, 8 Jan 2015 21:34:52 +0000 (13:34 -0800)
committerSage Weil <sage@redhat.com>
Mon, 12 Jan 2015 16:20:39 +0000 (08:20 -0800)
commit16c023d8fa5575d4dd138aeee4d4fd9b8f32c0f6
treec5736a27feaf6883fc7cd960fabec8572e189e23
parent6caa4fa42c6eaa76b3b9caf37e4ee09844f017a7
osd: requeue PG when we skip handling a peering event

If we don't handle the event, we need to put the PG back into the peering
queue or else the event won't get processed until the next event is
queued, at which point we'll be processing events with a delay.

The queue_null is not necessary (and is a waste of effort) because the
event is still in pg->peering_queue and the PG is queued.

Note that this only triggers when we exceeed osd_map_max_advance, usually
when there is a lot of peering and recovery activity going on.  A
workaround is to increase that value, but if you exceed osd_map_cache_size
you expose yourself to crache thrashing by the peering work queue, which
can cause serious problems with heavily degraded clusters and bit lots of
people on dumpling.

Backport: giant, firefly
Fixes: #10431
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 492ccc900c3358f36b6b14a207beec071eb06707)
src/osd/OSD.cc