Commit 04bedd79 authored by David Teigland's avatar David Teigland

dlm: fix lowcomms_connect_node for sctp

The recently added dlm_lowcomms_connect_node() from
391fbdc5 does not work
when using SCTP instead of TCP.  The sctp connection code
has nothing to do without data to send.  Check for no data
in the sctp connection code and do nothing instead of
triggering a BUG.  Also have connect_node() do nothing
when the protocol is sctp.
Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
parent 9c1fe834
...@@ -316,6 +316,10 @@ int dlm_lowcomms_connect_node(int nodeid) ...@@ -316,6 +316,10 @@ int dlm_lowcomms_connect_node(int nodeid)
{ {
struct connection *con; struct connection *con;
/* with sctp there's no connecting without sending */
if (dlm_config.ci_protocol != 0)
return 0;
if (nodeid == dlm_our_nodeid()) if (nodeid == dlm_our_nodeid())
return 0; return 0;
...@@ -855,11 +859,14 @@ static void sctp_init_assoc(struct connection *con) ...@@ -855,11 +859,14 @@ static void sctp_init_assoc(struct connection *con)
outmessage.msg_flags = MSG_EOR; outmessage.msg_flags = MSG_EOR;
spin_lock(&con->writequeue_lock); spin_lock(&con->writequeue_lock);
e = list_entry(con->writequeue.next, struct writequeue_entry,
list);
BUG_ON((struct list_head *) e == &con->writequeue); if (list_empty(&con->writequeue)) {
spin_unlock(&con->writequeue_lock);
log_print("writequeue empty for nodeid %d", con->nodeid);
return;
}
e = list_first_entry(&con->writequeue, struct writequeue_entry, list);
len = e->len; len = e->len;
offset = e->offset; offset = e->offset;
spin_unlock(&con->writequeue_lock); spin_unlock(&con->writequeue_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment