connect: allow to avoid the testunit ready call in iscsi_full_connect_async
iscsi-ls show luns command does not work when the target redirects at login. to avoid redundant code allow iscsi_full_connect_async to skip the testunit ready part. Signed-off-by: Peter Lieven <pl@kamp.de>
This commit is contained in:
@@ -183,17 +183,12 @@ void list_luns(struct client_state *clnt, const char *target, const char *portal
|
|||||||
}
|
}
|
||||||
iscsi_set_session_type(iscsi, ISCSI_SESSION_NORMAL);
|
iscsi_set_session_type(iscsi, ISCSI_SESSION_NORMAL);
|
||||||
iscsi_set_header_digest(iscsi, ISCSI_HEADER_DIGEST_NONE_CRC32C);
|
iscsi_set_header_digest(iscsi, ISCSI_HEADER_DIGEST_NONE_CRC32C);
|
||||||
if (iscsi_connect_sync(iscsi, portal) != 0) {
|
|
||||||
|
if (iscsi_full_connect_sync(iscsi, portal, -1) != 0) {
|
||||||
printf("iscsi_connect failed. %s\n", iscsi_get_error(iscsi));
|
printf("iscsi_connect failed. %s\n", iscsi_get_error(iscsi));
|
||||||
exit(10);
|
exit(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iscsi_login_sync(iscsi) != 0) {
|
|
||||||
fprintf(stderr, "login failed :%s\n", iscsi_get_error(iscsi));
|
|
||||||
exit(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* get initial reportluns data, all targets can report 16 bytes but some
|
/* get initial reportluns data, all targets can report 16 bytes but some
|
||||||
* fail if we ask for too much.
|
* fail if we ask for too much.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -130,10 +130,14 @@ iscsi_login_cb(struct iscsi_context *iscsi, int status, void *command_data _U_,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iscsi_testunitready_task(iscsi, ct->lun,
|
if (ct->lun != -1) {
|
||||||
iscsi_testunitready_cb, ct) == NULL) {
|
if (iscsi_testunitready_task(iscsi, ct->lun,
|
||||||
iscsi_set_error(iscsi, "iscsi_testunitready_async failed.");
|
iscsi_testunitready_cb, ct) == NULL) {
|
||||||
ct->cb(iscsi, SCSI_STATUS_ERROR, NULL, ct->private_data);
|
iscsi_set_error(iscsi, "iscsi_testunitready_async failed.");
|
||||||
|
ct->cb(iscsi, SCSI_STATUS_ERROR, NULL, ct->private_data);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ct->cb(iscsi, SCSI_STATUS_GOOD, NULL, ct->private_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -180,17 +180,12 @@ void list_luns(struct client_state *clnt, const char *target, const char *portal
|
|||||||
}
|
}
|
||||||
iscsi_set_session_type(iscsi, ISCSI_SESSION_NORMAL);
|
iscsi_set_session_type(iscsi, ISCSI_SESSION_NORMAL);
|
||||||
iscsi_set_header_digest(iscsi, ISCSI_HEADER_DIGEST_NONE_CRC32C);
|
iscsi_set_header_digest(iscsi, ISCSI_HEADER_DIGEST_NONE_CRC32C);
|
||||||
if (iscsi_connect_sync(iscsi, portal) != 0) {
|
|
||||||
|
if (iscsi_full_connect_sync(iscsi, portal, -1) != 0) {
|
||||||
printf("iscsi_connect failed. %s\n", iscsi_get_error(iscsi));
|
printf("iscsi_connect failed. %s\n", iscsi_get_error(iscsi));
|
||||||
exit(10);
|
exit(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iscsi_login_sync(iscsi) != 0) {
|
|
||||||
fprintf(stderr, "login failed :%s\n", iscsi_get_error(iscsi));
|
|
||||||
exit(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* get initial reportluns data, all targets can report 16 bytes but some
|
/* get initial reportluns data, all targets can report 16 bytes but some
|
||||||
* fail if we ask for too much.
|
* fail if we ask for too much.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user