X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Fklnds%2Fsocklnd%2Fsocklnd.c;h=c47dcb4334c2e2db9dad91682d3a53a3e59502d6;hb=e0576be940d7af30b2ba6e219891a4413670325d;hp=49956a23de1dd4847d85e47ed263bb2a8eb51c78;hpb=879d069ae2d237695d921e9dfafe926f1dcea923;p=fs%2Flustre-release.git diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 49956a2..c47dcb4 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -56,7 +56,7 @@ static ctl_table ksocknal_ctl_table[] = { &ksocknal_data.ksnd_eager_ack, sizeof (int), 0644, NULL, &proc_dointvec}, #if SOCKNAL_ZC - {SOCKNAL_SYSCTL_EAGER_ACK, "zero_copy", + {SOCKNAL_SYSCTL_ZERO_COPY, "zero_copy", &ksocknal_data.ksnd_zc_min_frag, sizeof (int), 0644, NULL, &proc_dointvec}, #endif @@ -796,6 +796,10 @@ ksocknal_create_conn (ksock_route_t *route, struct socket *sock, peer->ksnp_last_alive = jiffies; peer->ksnp_error = 0; + /* Set the deadline for the outgoing HELLO to drain */ + conn->ksnc_tx_deadline = jiffies + + ksocknal_data.ksnd_io_timeout * HZ; + list_add (&conn->ksnc_list, &peer->ksnp_conns); atomic_inc (&conn->ksnc_refcount); @@ -827,7 +831,9 @@ ksocknal_create_conn (ksock_route_t *route, struct socket *sock, write_unlock_irqrestore (&ksocknal_data.ksnd_global_lock, flags); if (rc != 0) - CERROR ("Closed %d stale conns to "LPX64"\n", rc, nid); + CERROR ("Closed %d stale conns to nid "LPX64" ip %d.%d.%d.%d\n", + rc, conn->ksnc_peer->ksnp_nid, + HIPQUAD(conn->ksnc_ipaddr)); if (bind_irq) /* irq binding required */ ksocknal_bind_irq (irq); @@ -836,8 +842,8 @@ ksocknal_create_conn (ksock_route_t *route, struct socket *sock, ksocknal_data_ready (sock->sk, 0); ksocknal_write_space (sock->sk); - CDEBUG(D_IOCTL, "conn [%p] registered for nid "LPX64"\n", - conn, conn->ksnc_peer->ksnp_nid); + CDEBUG(D_IOCTL, "conn [%p] registered for nid "LPX64" ip %d.%d.%d.%d\n", + conn, conn->ksnc_peer->ksnp_nid, HIPQUAD(conn->ksnc_ipaddr)); ksocknal_put_conn (conn); return (0); @@ -847,7 +853,7 @@ void ksocknal_close_conn_locked (ksock_conn_t *conn, int error) { /* This just does the immmediate housekeeping, and queues the - * connection for the reaper to terminate. + * connection for the reaper to terminate. * Caller holds ksnd_global_lock exclusively in irq context */ ksock_peer_t *peer = conn->ksnc_peer; ksock_route_t *route; @@ -987,15 +993,11 @@ ksocknal_destroy_conn (ksock_conn_t *conn) /* complete current receive if any */ switch (conn->ksnc_rx_state) { case SOCKNAL_RX_BODY: -#if 0 - lib_finalize (&ksocknal_lib, NULL, conn->ksnc_cookie); -#else - CERROR ("Refusing to complete a partial receive from " - LPX64", ip %08x\n", conn->ksnc_peer->ksnp_nid, - conn->ksnc_ipaddr); - CERROR ("This may hang communications and " - "prevent modules from unloading\n"); -#endif + CERROR("Completing partial receive from "LPX64 + ", ip %d.%d.%d.%d:%d, with error\n", + conn->ksnc_peer->ksnp_nid, + HIPQUAD(conn->ksnc_ipaddr), conn->ksnc_port); + lib_finalize (&ksocknal_lib, NULL, conn->ksnc_cookie, PTL_FAIL); break; case SOCKNAL_RX_BODY_FWD: ksocknal_fmb_callback (conn->ksnc_cookie, -ECONNABORTED);