New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osdc/Objecter: resend RWORDERED ops on full #13759

Merged
merged 3 commits into from Mar 8, 2017

Conversation

Projects
None yet
5 participants
@liewegas
Member

liewegas commented Mar 3, 2017

Our condition for respecting the FULL flag is complex, and involves
the WRITE | RWORDERED flags vs the FULL_FORCE | FULL_TRY flags. Previously,
we could block a read bc of RWORDRED but not resend it later.

Fix by capturing the complex condition in a respects_full() bool and using
it both for the blocking-on-send and resending-on-possibly-notfull-later
checks.

Fixes: http://tracker.ceph.com/issues/19133

NOTE: the but that actualy cause the failure in that ticket was a jewel
bug where it was missing the backport of 07b2a22; this bug was found by inspection while debugging that one. Both should
get backported to jewel and kraken!

@liewegas liewegas requested a review from jdurgin Mar 3, 2017

@smithfarm

This comment has been minimized.

Contributor

smithfarm commented Mar 3, 2017

@liewegas 07b2a22 is already in kraken, though, right?

@liewegas

This comment has been minimized.

Member

liewegas commented Mar 3, 2017

@@ -1073,8 +1073,7 @@ void Objecter::_scan_requests(OSDSession *s,
op->session ? op->session->con.get() : nullptr);
switch (r) {
case RECALC_OP_TARGET_NO_ACTION:
if (!force_resend &&
(!force_resend_writes || !(op->target.flags & CEPH_OSD_FLAG_WRITE)))
if (!force_resend && !(force_send_writes && op->respects_full()))

This comment has been minimized.

@LiumxNL

LiumxNL Mar 6, 2017

Contributor

force_send_writes -> force_resend_writes

@gregsfortytwo

Reviewed-by: Greg Farnum gfarnum@redhat.com

@jdurgin

jdurgin approved these changes Mar 7, 2017

liewegas added some commits Mar 3, 2017

osdc/Objecter: resend RWORDERED ops on full
Our condition for respecting the FULL flag is complex, and involves
the WRITE | RWORDERED flags vs the FULL_FORCE | FULL_TRY flags.  Previously,
we could block a read bc of RWORDRED but not resend it later.

Fix by capturing the complex condition in a respects_full() bool and using
it both for the blocking-on-send and resending-on-possibly-notfull-later
checks.

Fixes: http://tracker.ceph.com/issues/19133
Signed-off-by: Sage Weil <sage@redhat.com>
qa/tasks/thrashosds: chance_thrash_cluster_full
Induce a momentarily full cluster.

Signed-off-by: Sage Weil <sage@redhat.com>
qa/tasks/ceph_manager: use new luminous set-full-ratio etc
Signed-off-by: Sage Weil <sage@redhat.com>

@liewegas liewegas merged commit 7fbe8fb into ceph:master Mar 8, 2017

3 checks passed

Signed-off-by all commits in this PR are signed
Details
Unmodifed Submodules submodules for project are unmodified
Details
default Build finished.
Details

@liewegas liewegas deleted the liewegas:wip-19133 branch Mar 8, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment