mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 15:20:58 +07:00
[PATCH] ocfs2: added source addr to bind() in o2net_start_connect()
to prevent confusion when a virtual ip is created on the same interface Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
This commit is contained in:
parent
110ba90858
commit
b7668c72d2
@ -1318,7 +1318,7 @@ static void o2net_start_connect(void *arg)
|
||||
{
|
||||
struct o2net_node *nn = arg;
|
||||
struct o2net_sock_container *sc = NULL;
|
||||
struct o2nm_node *node = NULL;
|
||||
struct o2nm_node *node = NULL, *mynode = NULL;
|
||||
struct socket *sock = NULL;
|
||||
struct sockaddr_in myaddr = {0, }, remoteaddr = {0, };
|
||||
int ret = 0;
|
||||
@ -1334,6 +1334,12 @@ static void o2net_start_connect(void *arg)
|
||||
goto out;
|
||||
}
|
||||
|
||||
mynode = o2nm_get_node_by_num(o2nm_this_node());
|
||||
if (mynode == NULL) {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
spin_lock(&nn->nn_lock);
|
||||
/* see if we already have one pending or have given up */
|
||||
if (nn->nn_sc || nn->nn_persistent_error)
|
||||
@ -1361,12 +1367,14 @@ static void o2net_start_connect(void *arg)
|
||||
sock->sk->sk_allocation = GFP_ATOMIC;
|
||||
|
||||
myaddr.sin_family = AF_INET;
|
||||
myaddr.sin_addr.s_addr = (__force u32)mynode->nd_ipv4_address;
|
||||
myaddr.sin_port = (__force u16)htons(0); /* any port */
|
||||
|
||||
ret = sock->ops->bind(sock, (struct sockaddr *)&myaddr,
|
||||
sizeof(myaddr));
|
||||
if (ret) {
|
||||
mlog(0, "bind failed: %d\n", ret);
|
||||
mlog(ML_ERROR, "bind failed with %d at address %u.%u.%u.%u\n",
|
||||
ret, NIPQUAD(mynode->nd_ipv4_address));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -1407,6 +1415,8 @@ static void o2net_start_connect(void *arg)
|
||||
sc_put(sc);
|
||||
if (node)
|
||||
o2nm_node_put(node);
|
||||
if (mynode)
|
||||
o2nm_node_put(mynode);
|
||||
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user