Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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> (cherry picked from commit 93fd56e) Conflicts: src/osd/PrimaryLogPG.cc: - Resolved in cancel_copy and added cancel_and_requeue_proxy_ops. - Define io_tids to FlushOp
- Loading branch information
Showing
2 changed files
with
87 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters