Re: Peering in crimson

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/22/19 4:43 PM, Sam Just wrote:
As I mentioned on https://github.com/ceph/ceph/pull/27071 I'm pretty confident
that the fastest way to get peering working in crimson is to extract the logic
for dealing with the peering state, messages, and state transitions from PG.h
into a module we can directly reuse in Crimson.  As it happens, most of the
heavy lifting was already done with the introduction of the state machine.
Each peering message/event gets injected into the state machine and results in
a set of side effects in the RecoveryCtx to be executed asynchronously.  The
handlers do not actually perform any IO or messaging operations except by
populating RecoveryCtx.  As such, in principle, it's already well suited to a
seastar world.

I've started working on that refactor.  It's been straightforward (if fiddly
and time consuming) so far to move RecoveryMachine along with the appropriate
PG state (peer_info etc) and methods (proc_replica_info etc) into a separate
file/class such that classicPG and crimsonPG are only referenced through a
narrow interface for things like notification of state changes.

Given that we want crimson to be compatible (at least for now) with RADOS as we
know it, I think this is probably the right path.  Of course, adopting the
existing protocol does mean adopting some of the same overhead in that we still
in some sense need to persist certain log/info structures required by peering
-- though we can of course do it in a radically different way or
ignore some of the
IO overhead for testing purposes.  Nevertheless, I think it represents
at least a
decent next step.
-Sam


That is awesome Sam.  Glad to have you back. :)


Mark




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux