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>