]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd/PrimaryLogPG: cancel all objecter ops atomically 20484/head
authorSage Weil <sage@redhat.com>
Mon, 19 Feb 2018 14:54:58 +0000 (08:54 -0600)
committerSage Weil <sage@redhat.com>
Mon, 19 Feb 2018 14:54:58 +0000 (08:54 -0600)
commit93fd56ed039363c4f169259a0a560b968d1a0333
treed44f1f92dc88640f6b3381e7ea3bf9db9d5c588c
parent7459d4a4794eb092cdc3ee06af12b782c892193d
osd/PrimaryLogPG: cancel all objecter ops atomically

We want to avoid a situation like this:

- start proxy op A (epoch E)
- start proxy op B (epoch E)
- start proxy op C (epoch E)
- objecter sends none of these because target is down in epoch E
- osdmap update to E+1
- pg cancels requeues A, B
- objecter updates to E+1
- objecter sends C
- pg cancels/requeues C

Note that the key thing is that operations on each object are canceled
atomically.  On the interval change we do it all at once.  In the other
cases, we cancel everything on the given object together.

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