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

jewel: osd: Add heartbeat message for Jumbo Frames (MTU 9000) #16059

Merged
merged 5 commits into from Aug 31, 2017

Conversation

Projects
None yet
7 participants
@vumrao
Contributor

vumrao commented Jul 1, 2017

jewel: OSD: Add heartbeat message for Jumbo Frames(MTU 9000)
This includes following commits:

2096113
9beaf5e
44b7839
d959735
15ce077

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

@tchaikov tchaikov added this to the jewel milestone Jul 3, 2017

@smithfarm

Please re-do the cherry-picks with -x and include conflict resolution description for any conflicts. For details, refer to http://tracker.ceph.com/projects/ceph-releases/wiki/HOWTO_backport_commits

gregsfortytwo and others added some commits Jun 5, 2017

osd: heartbeat with packets large enough to require working jumbo fra…
…mes.

We get periodic reports that users somehow misconfigure one of their switches
so that it drops jumbo frames, yet the servers are still passing them along. In
that case, MOSDOp messages generally don't get through because they are much
larger than the 1500-byte non-jumbo limit, but the MOSDPing messages have kept
going (as they are very small and dispatched independently, even when the
server is willing to make jumbo frames). This means peer OSDs won't mark down
the ones behind the broken switch, despite all IO hanging.
Push the MOSDPing message size over the 1500-byte limit so that anybody in
this scenario will see the OSDs stuck behind a bad switch get marked down.

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

Signed-off-by: Greg Farnum <gfarnum@redhat.com>
(cherry picked from commit 2096113)

 Conflicts:
	src/messages/MOSDPing.h
         - Changed HEAD_VERSION to 3 and kept COMPAT_VERSION to 1.
         - In class MOSDPing removed following line:
               if (header.version >= 2)
         - To keep ::decode(stamp, p) without condition because HEAD_Version
           is already 3 now and this condition is removed in the backport commit.
messages/MOSDPing: initialize MOSDPing padding
This memory must be initialized or else valgrind will be very unhappy.

Avoid the cost of zeroing (or even allocating) the buffer for normal
padding values by (re)using a static zero buffer.

Fixes: http://tracker.ceph.com/issues/20323
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 9beaf5e)
OSD: mark two heartbeat config opts as observed
"osd heartbeat min size" and "osd heartbeat interval" can be changed
at runtime, because their values, when used, are always taken from
global Ceph configuration. Mark them as observed, so the message
the user sees once they're changed doesn't confuse them.

Signed-off-by: Piotr Dałek <piotr.dalek@corp.ovh.com>
(cherry picked from commit 44b7839)
messages/MOSDPing: fix the inflation amount calculation
If user specifies a min_message_size small enough (or zero to disable
it altogether), OSDs will crash and burn while trying to allocate
almost 4GB of payload (both min_message_size and payload.length() are
unsigned, so it'll roll over back to 4GB and MAX(4GB, 0) will use 4GB).
If the size of dummy payload is 0, don't bother constructing bufferptr
and bufferlist, then encoding that.

Signed-off-by: Piotr Dałek <piotr.dalek@corp.ovh.com>
(cherry picked from commit d959735)
messages/MOSDPing: optimize encode and decode of dummy payload
The dummy payload doesn't need to be processed, we can just skip over
it when decoding and we can use a single bufferptr instead of entire
bufferlist to encode it.

Signed-off-by: Piotr Dałek <piotr.dalek@corp.ovh.com>
(cherry picked from commit 15ce077)
@vumrao

This comment has been minimized.

Show comment
Hide comment
@vumrao

vumrao Jul 18, 2017

Contributor

@smithfarm thanks for your inputs. I have done the cherry-pick with -x option and included the conflicts details in the conflicting commit.

Contributor

vumrao commented Jul 18, 2017

@smithfarm thanks for your inputs. I have done the cherry-pick with -x option and included the conflicts details in the conflicting commit.

@smithfarm smithfarm changed the title from jewel: OSD: Add heartbeat message for Jumbo Frames(MTU 9000) to jewel: osd: Add heartbeat message for Jumbo Frames(MTU 9000) Jul 18, 2017

@smithfarm smithfarm changed the title from jewel: osd: Add heartbeat message for Jumbo Frames(MTU 9000) to jewel: osd: Add heartbeat message for Jumbo Frames (MTU 9000) Jul 18, 2017

Requested changes were made

@smithfarm

This comment has been minimized.

Show comment
Hide comment
@smithfarm

smithfarm Aug 29, 2017

Contributor

@liewegas @jdurgin @gregsfortytwo @tchaikov This passed the following relevant suites:

Please review.

Contributor

smithfarm commented Aug 29, 2017

@liewegas @jdurgin @gregsfortytwo @tchaikov This passed the following relevant suites:

Please review.

@jdurgin

Conflict resolution looks good - the v2 encoding is pre-argonaut so stamp will always be there.

@smithfarm smithfarm merged commit bd2a0c8 into ceph:jewel Aug 31, 2017

4 checks passed

Docs: build check OK - docs built
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details
make check make check succeeded
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment