[Pvfs2-cvs] commit by slang in pvfs2/src/io/bmi/bmi_tcp:
bmi-tcp-addressing.h bmi-tcp.c socket-collection-epoll.c
CVS commit program
cvs at parl.clemson.edu
Tue Oct 9 18:01:39 EDT 2007
Update of /projects/cvsroot/pvfs2/src/io/bmi/bmi_tcp
In directory parlweb1:/tmp/cvs-serv12999/src/io/bmi/bmi_tcp
Modified Files:
Tag: pvfs-2-6-branch
bmi-tcp-addressing.h bmi-tcp.c socket-collection-epoll.c
Log Message:
merge halloween bug fixes to 2.6 branch.
Index: bmi-tcp-addressing.h
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/bmi/bmi_tcp/bmi-tcp-addressing.h,v
diff -p -u -r1.15 -r1.15.12.1
--- bmi-tcp-addressing.h 11 Sep 2006 20:22:04 -0000 1.15
+++ bmi-tcp-addressing.h 9 Oct 2007 22:01:38 -0000 1.15.12.1
@@ -46,6 +46,7 @@ struct tcp_allowed_connection_s {
* connections are made */
struct tcp_addr
{
+ PVFS_BMI_addr_t bmi_addr;
method_addr_p map; /* points back to generic address */
/* stores error code for addresses that are broken for some reason */
int addr_error;
Index: bmi-tcp.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/bmi/bmi_tcp/bmi-tcp.c,v
diff -p -u -r1.113.6.1 -r1.113.6.2
--- bmi-tcp.c 5 Apr 2007 15:49:41 -0000 1.113.6.1
+++ bmi-tcp.c 9 Oct 2007 22:01:38 -0000 1.113.6.2
@@ -916,7 +916,7 @@ int BMI_tcp_get_info(int option,
* an error and there is no way to reconnect
*/
if(tcp_addr_data->addr_error != 0 &&
- tcp_addr_data->dont_reconnect == 1)
+ tcp_addr_data->dont_reconnect == 1)
{
query->response = 1;
}
@@ -1855,6 +1855,8 @@ void tcp_forget_addr(method_addr_p map,
BMI_socket_collection_testglobal(tcp_socket_collection_p,
0, &tmp_outcount, &tmp_addr, &tmp_status, 0, &interface_mutex);
}
+
+ bmi_method_addr_forget_callback(tcp_addr_data->bmi_addr);
tcp_shutdown_addr(map);
tcp_cleanse_addr(map, error_code);
tcp_addr_data->addr_error = error_code;
@@ -2850,7 +2852,7 @@ static int handle_new_connection(method_
*/
tcp_addr_data->dont_reconnect = 1;
/* register this address with the method control layer */
- ret = bmi_method_addr_reg_callback(new_addr);
+ tcp_addr_data->bmi_addr = bmi_method_addr_reg_callback(new_addr);
if (ret < 0)
{
tcp_shutdown_addr(new_addr);
@@ -2985,10 +2987,7 @@ static int tcp_do_work_recv(method_addr_
*stall_flag = 0;
gossip_ldebug(GOSSIP_BMI_DEBUG_TCP, "Reading header for new op.\n");
- /* NOTE: we only allow a blocking call here because we peeked to see
- * if this amount of data was ready above.
- */
- ret = BMI_sockio_brecv(tcp_addr_data->socket,
+ ret = BMI_sockio_nbrecv(tcp_addr_data->socket,
new_header.enc_hdr, TCP_ENC_HDR_SIZE);
if (ret < TCP_ENC_HDR_SIZE)
{
Index: socket-collection-epoll.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/bmi/bmi_tcp/socket-collection-epoll.c,v
diff -p -u -r1.4 -r1.4.10.1
--- socket-collection-epoll.c 12 Sep 2006 00:49:31 -0000 1.4
+++ socket-collection-epoll.c 9 Oct 2007 22:01:38 -0000 1.4.10.1
@@ -201,12 +201,14 @@ int BMI_socket_collection_testglobal(soc
tcp_addr_data = qlist_entry(iterator, struct tcp_addr, sc_link);
qlist_del(&tcp_addr_data->sc_link);
+
/* take out of the epoll set */
if(tcp_addr_data->sc_index > -1)
{
memset(&event, 0, sizeof(event));
event.events = 0;
event.data.ptr = tcp_addr_data->map;
+
ret = epoll_ctl(scp->epfd, EPOLL_CTL_DEL, tcp_addr_data->socket,
&event);
@@ -228,6 +230,7 @@ int BMI_socket_collection_testglobal(soc
{
tcp_addr_data = qlist_entry(iterator, struct tcp_addr, sc_link);
qlist_del(&tcp_addr_data->sc_link);
+
if(tcp_addr_data->sc_index > -1)
{
memset(&event, 0, sizeof(event));
@@ -236,8 +239,9 @@ int BMI_socket_collection_testglobal(soc
event.events = (EPOLLIN|EPOLLERR|EPOLLHUP);
if(tcp_addr_data->write_ref_count > 0)
event.events |= EPOLLOUT;
+
ret = epoll_ctl(scp->epfd, EPOLL_CTL_MOD, tcp_addr_data->socket,
- &event);
+ &event);
if(ret < 0 && errno != ENOENT)
{
@@ -257,6 +261,7 @@ int BMI_socket_collection_testglobal(soc
event.events = (EPOLLIN|EPOLLERR|EPOLLHUP);
if(tcp_addr_data->write_ref_count > 0)
event.events |= EPOLLOUT;
+
ret = epoll_ctl(scp->epfd, EPOLL_CTL_ADD, tcp_addr_data->socket,
&event);
if(ret < 0 && errno != EEXIST)
More information about the Pvfs2-cvs
mailing list