diff options
| author | Steve French <sfrench@us.ibm.com> | 2006-03-03 11:27:25 +0000 | 
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2006-03-03 11:27:25 +0000 | 
| commit | c6ee60b7c8bbc78e3b1776b2820a7e7f95f8996a (patch) | |
| tree | 99b48ef0f5217fddc0aa897d9e60d95ace7da6ff /fs/ocfs2/cluster/tcp.c | |
| parent | 13298defe5323c7fdcac268f588d8d1090758fb8 (diff) | |
| parent | c499ec24c31edf270e777a868ffd0daddcfe7ebd (diff) | |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/ocfs2/cluster/tcp.c')
| -rw-r--r-- | fs/ocfs2/cluster/tcp.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c index d22d4cf08db..0f60cc0d398 100644 --- a/fs/ocfs2/cluster/tcp.c +++ b/fs/ocfs2/cluster/tcp.c @@ -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 @@ out:  		sc_put(sc);  	if (node)  		o2nm_node_put(node); +	if (mynode) +		o2nm_node_put(mynode);  	return;  }  | 
