Skip to content

Commit

Permalink
fs: dlm: fix mark per nodeid setting
Browse files Browse the repository at this point in the history
This patch fixes to set per nodeid mark configuration for accepted
sockets as well. Before this patch only the listen socket mark value was
used for all accepted connections. This patch will ensure that the
cluster mark attribute value will be always used for all sockets, if a
per nodeid mark value is specified dlm will use this value for the
specific node.

Signed-off-by: Alexander Aring <[email protected]>
Signed-off-by: David Teigland <[email protected]>
  • Loading branch information
Alexander Aring authored and teigland committed Sep 29, 2020
1 parent 0461e0d commit 3f78cd7
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
16 changes: 10 additions & 6 deletions fs/dlm/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -860,18 +860,22 @@ int dlm_comm_seq(int nodeid, uint32_t *seq)
return 0;
}

int dlm_comm_mark(int nodeid, unsigned int *mark)
void dlm_comm_mark(int nodeid, unsigned int *mark)
{
struct dlm_comm *cm;

cm = get_comm(nodeid);
if (!cm)
return -ENOENT;
if (!cm) {
*mark = dlm_config.ci_mark;
return;
}

*mark = cm->mark;
put_comm(cm);
if (cm->mark)
*mark = cm->mark;
else
*mark = dlm_config.ci_mark;

return 0;
put_comm(cm);
}

int dlm_our_nodeid(void)
Expand Down
2 changes: 1 addition & 1 deletion fs/dlm/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ void dlm_config_exit(void);
int dlm_config_nodes(char *lsname, struct dlm_config_node **nodes_out,
int *count_out);
int dlm_comm_seq(int nodeid, uint32_t *seq);
int dlm_comm_mark(int nodeid, unsigned int *mark);
void dlm_comm_mark(int nodeid, unsigned int *mark);
int dlm_our_nodeid(void);
int dlm_our_addr(struct sockaddr_storage *addr, int num);

Expand Down
12 changes: 6 additions & 6 deletions fs/dlm/lowcomms.c
Original file line number Diff line number Diff line change
Expand Up @@ -790,6 +790,7 @@ static int accept_from_sock(struct connection *con)
int nodeid;
struct connection *newcon;
struct connection *addcon;
unsigned int mark;

if (!dlm_allow_conn) {
return -1;
Expand Down Expand Up @@ -826,6 +827,9 @@ static int accept_from_sock(struct connection *con)
return -1;
}

dlm_comm_mark(nodeid, &mark);
sock_set_mark(newsock->sk, mark);

log_print("got connection from %d", nodeid);

/* Check to see if we already have a connection to this node. This
Expand Down Expand Up @@ -971,9 +975,7 @@ static void sctp_connect_to_sock(struct connection *con)
return;
}

result = dlm_comm_mark(con->nodeid, &mark);
if (result < 0)
return;
dlm_comm_mark(con->nodeid, &mark);

mutex_lock(&con->sock_mutex);

Expand Down Expand Up @@ -1071,9 +1073,7 @@ static void tcp_connect_to_sock(struct connection *con)
return;
}

result = dlm_comm_mark(con->nodeid, &mark);
if (result < 0)
return;
dlm_comm_mark(con->nodeid, &mark);

mutex_lock(&con->sock_mutex);
if (con->retries++ > MAX_CONNECT_RETRIES)
Expand Down

0 comments on commit 3f78cd7

Please sign in to comment.