mirror of https://gitee.com/openkylin/linux.git
[SCSI] iscsi_tcp: return a descriptive error value during connection errors
The segment->done functions return a iscsi error value which gives a lot more info than conn failed, so this patch has us return that value. I also add a new one for xmit failures. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
8e12452549
commit
6f481e3cef
|
@ -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 @@ iscsi_xmit(struct iscsi_conn *conn)
|
|||
/* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -214,6 +214,7 @@ enum iscsi_err {
|
|||
ISCSI_ERR_PARAM_NOT_FOUND = ISCSI_ERR_BASE + 16,
|
||||
ISCSI_ERR_NO_SCSI_CMD = ISCSI_ERR_BASE + 17,
|
||||
ISCSI_ERR_INVALID_HOST = ISCSI_ERR_BASE + 18,
|
||||
ISCSI_ERR_XMIT_FAILED = ISCSI_ERR_BASE + 19,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue