From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 4/6] dlm: use sctp 1-to-1 API
Date: Thu, 13 Aug 2015 09:13:22 -0300 [thread overview]
Message-ID: <55CC89E2.40109@gmail.com> (raw)
In-Reply-To: <55CC6571.70009@redhat.com>
Em 13-08-2015 06:37, Steven Whitehouse escreveu:
> Hi,
>
> On 12/08/15 17:42, Marcelo Ricardo Leitner wrote:
>> Em 12-08-2015 12:33, David Laight escreveu:
>>> From: Marcelo Ricardo Leitner
>>>> Sent: 12 August 2015 14:16
>>>> Em 12-08-2015 07:23, David Laight escreveu:
>>>>> From: Marcelo Ricardo Leitner
>>>>>> Sent: 11 August 2015 23:22
>>>>>> DLM is using 1-to-many API but in a 1-to-1 fashion. That is, it's not
>>>>>> needed but this causes it to use sctp_do_peeloff() to mimic an
>>>>>> kernel_accept() and this causes a symbol dependency on sctp module.
>>>>>>
>>>>>> By switching it to 1-to-1 API we can avoid this dependency and also
>>>>>> reduce quite a lot of SCTP-specific code in lowcomms.c.
>>>>> ...
>>>>>
>>>>> You still need to enable sctp notifications (I think the patch deleted
>>>>> that code).
>>>>> Otherwise you don't get any kind of indication if the remote system
>>>>> 'resets' (ie sends an new INIT chunk) on an existing connection.
>>>>
>>>> Right, it would miss the restart event and could generate a corrupted
>>>> tx/rx buffers by glueing parts of old messages with new ones.
>>>
>>> Except that it is SCTP so you'd expect DATA chunks to contain entire
>>> messages and so get unexpected message sequences rather than corrupt
>>> messages.
>>
>> I was thinking on cases where the buf for recvmsg is not enough to
>> hold the chunk, so that the remaining is left for another attempt
>> (sctp_recvmsg, around line 2130), but sounds like we won't purge rx
>> buffer when the reset happens so that doesn't matter. The association
>> is replaced, but the buffers are kept.
>>
>> Out of order messages aren't a problem for dlm. It can recover from
>> that just fine, as it doesn't have a specific handshake at beginning
>> or something like that and upper layers are agnostic to that state
>> transition (disconnect/reconnect/...), this should be fine.
>>
> I'm not sure thats true - DLM does rely on message ordering in some
> cases in order to ensure correct functioning. So depending on how SCTP
> is interfaced to DLM, it might potentially be an issue,
Yes, that ordering is still kept. Like, it won't flip a newer message to
a first position. It's just that if DLM had its own handshake exposing
its version and features, one peer (the old one) would get it out of the
blue and the other (the new one) would never get it. Or if its messages
would depend on a previous state, meaning LockMsgC is only acceptable if
LockMsgA was already performed on that connection. That is my
understanding from what David pointed out and what I checked here.
Then as lowcomms previously allowed connection closing without telling
anyone above it that it happened, it should be fine, right? It will just
finish processing the old messages and then start on the new ones, just
like before.
Thanks,
Marcelo
next prev parent reply other threads:[~2015-08-13 12:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1439330654.git.marcelo.leitner@gmail.com>
2015-08-11 22:22 ` [Cluster-devel] [PATCH 1/6] dlm: fix connection stealing if using SCTP Marcelo Ricardo Leitner
2015-08-11 22:22 ` [Cluster-devel] [PATCH 2/6] dlm: fix race while closing connections Marcelo Ricardo Leitner
2015-08-11 22:22 ` [Cluster-devel] [PATCH 3/6] dlm: fix not reconnecting on connecting error handling Marcelo Ricardo Leitner
2015-08-11 22:22 ` [Cluster-devel] [PATCH 4/6] dlm: use sctp 1-to-1 API Marcelo Ricardo Leitner
2015-08-12 10:23 ` David Laight
2015-08-12 13:16 ` Marcelo Ricardo Leitner
2015-08-12 15:33 ` David Laight
2015-08-12 16:42 ` Marcelo Ricardo Leitner
2015-08-13 9:37 ` Steven Whitehouse
2015-08-13 12:13 ` Marcelo Ricardo Leitner [this message]
2015-08-11 22:22 ` [Cluster-devel] [PATCH 5/6] dlm: replace BUG_ON with a less severe handling Marcelo Ricardo Leitner
2015-08-11 22:22 ` [Cluster-devel] [PATCH 6/6] dlm: fix reconnecting but not sending data Marcelo Ricardo Leitner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55CC89E2.40109@gmail.com \
--to=marcelo.leitner@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).