All of lore.kernel.org
 help / color / mirror / Atom feed
* wip-addr-features
@ 2016-05-05 15:41 Sage Weil
  2016-05-08 15:00 ` wip-addr-features Junwang Zhao
  0 siblings, 1 reply; 8+ messages in thread
From: Sage Weil @ 2016-05-05 15:41 UTC (permalink / raw)
  To: zhjwpku, ceph-devel

Hi Zhao,

We identified wip-addr as a desireable first step to fixing up the 
messenger protocol.  It has a bunch of other nice benefits as well, like 
being able to support both IPv4 and IPv6 in the same cluster.

I started rebasing the branch this morning ran into a bunch of non-trivial 
questions about how we should structure the entity_addr_t to support both 
new address types (ipv4, ipv6, xio, etc.) *and* the a new on-wire 
protocol.  But this is actually step 2...

Step 1 is to just get the feature bits plumbed down to every bit of code 
that encodes an entity_addr_t to send over the wire so that we will 
know whether to encode using the new or legacy format.  To do that, I 
pushed a simplified branch, wip-addr-features, to

	https://github.com/liewegas/ceph/commits/wip-addr-features

The are some prelim encoding patches, then a patch that makes 
entity_addr_t and entity_inst_t *optionally* accept feature bits.  Let's 
call it optional-features-patch.  This compiles cleanly, and allows either 
an existing featureless encode

  entity_addr_t foo;
  ::encode(foo, bl);             // old way we need to eliminate

or a featured encode

  entity_addr_t foo;
  ::encode(foo, bl, features);   // what we want

compile.

Then there's a patch that makes the old way not compile.  Let's call it 
required-features-patch.  This will make the compiler spit out a million 
errors for all the call sites that still need to be fixed.

Finally, there is a 'wip' commit that fixes some but not all call sites.  
This commit needs to be broken down into simple, individual changes that 
can be tested and reviewed separately.

The idea is to work with the require-features-patch applied to identify 
remaining call sites that need features to encode entity_addr_t.  Create 
small, contained patches that fix individual modules, call sites, or add 
supporting infrastructure (like the changes that expose features to OSD 
cls ops in objclass/*).

Once there are several of those, remove the require-features-patch, and 
make sure the changes are safe and clean and everything still works 
properly.  We can merge these as we go to make incremental progress.

Finally, once *everything* is fixed to pass features to addr encode sites, 
the last commit will be the require-features-patch, and we can get it all 
in master.

That will lay the foundation so that we can change the entity_addr_t 
encoding to support the new protocols and encoding, the entity_addrvec_t 
type, and so on.

(The plan is to replace most instnaces of entity_addr_t with 
entity_addrvec_t--a list of addresses instead of a single one.  And make 
entity_addrvec_t encoded with old features spit out the legacy addr with 
the legacy entity_addr_t encoding so that old clients can still function.)

We're all in #ceph-devel on irc.oftc.net--feel free to ask questions there 
or on this email thread.  Or we can do another video conf session to go 
through it.

Thanks!
sage

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-10 11:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-05 15:41 wip-addr-features Sage Weil
2016-05-08 15:00 ` wip-addr-features Junwang Zhao
2016-05-09 12:20   ` wip-addr-features Sage Weil
2016-05-09 14:14     ` wip-addr-features Junwang Zhao
2016-05-10  1:07       ` wip-addr-features Junwang Zhao
2016-05-10 11:34         ` wip-addr-features Junwang Zhao
2016-05-10 11:40           ` wip-addr-features Haomai Wang
     [not found]           ` <CAEG8a3+EsfBkATnOgVjwEoMNwa0sShz68hJE8YNODPeh3fCw8g@mail.gmail.com>
2016-05-10 11:46             ` wip-addr-features Junwang Zhao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.