]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/iscsi_tcp.c
arm ide breakage
[linux-2.6-omap-h63xx.git] / drivers / scsi / iscsi_tcp.c
index e960f00da93aac8a3de8f4ecee6ca70bfba162e7..ed6c54cae7b14a132c19241859470559c4a6b7aa 100644 (file)
@@ -979,7 +979,7 @@ iscsi_tcp_recv(read_descriptor_t *rd_desc, struct sk_buff *skb,
 
 error:
        debug_tcp("Error receiving PDU, errno=%d\n", rc);
-       iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
+       iscsi_conn_failure(conn, rc);
        return 0;
 }
 
@@ -1098,8 +1098,10 @@ iscsi_xmit(struct iscsi_conn *conn)
 
        while (1) {
                rc = iscsi_tcp_xmit_segment(tcp_conn, segment);
-               if (rc < 0)
+               if (rc < 0) {
+                       rc = ISCSI_ERR_XMIT_FAILED;
                        goto error;
+               }
                if (rc == 0)
                        break;
 
@@ -1108,7 +1110,7 @@ iscsi_xmit(struct iscsi_conn *conn)
                if (segment->total_copied >= segment->total_size) {
                        if (segment->done != NULL) {
                                rc = segment->done(tcp_conn, segment);
-                               if (rc < 0)
+                               if (rc != 0)
                                        goto error;
                        }
                }
@@ -1123,8 +1125,8 @@ error:
        /* Transmit error. We could initiate error recovery
         * here. */
        debug_tcp("Error sending PDU, errno=%d\n", rc);
-       iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
-       return rc;
+       iscsi_conn_failure(conn, rc);
+       return -EIO;
 }
 
 /**
@@ -1885,6 +1887,7 @@ static void iscsi_tcp_session_destroy(struct iscsi_cls_session *cls_session)
        struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
 
        iscsi_r2tpool_free(cls_session->dd_data);
+       iscsi_session_teardown(cls_session);
 
        iscsi_host_remove(shost);
        iscsi_host_free(shost);
@@ -1908,7 +1911,7 @@ static struct scsi_host_template iscsi_sht = {
        .cmd_per_lun            = ISCSI_DEF_CMD_PER_LUN,
        .eh_abort_handler       = iscsi_eh_abort,
        .eh_device_reset_handler= iscsi_eh_device_reset,
-       .eh_host_reset_handler  = iscsi_eh_host_reset,
+       .eh_target_reset_handler= iscsi_eh_target_reset,
        .use_clustering         = DISABLE_CLUSTERING,
        .slave_configure        = iscsi_tcp_slave_configure,
        .proc_name              = "iscsi_tcp",