Fri Jun 19 16:13:09 2009 UTC ()
WARNS=4 (all sign-comparison changes)


(agc)
diff -r1.18 -r1.19 src/dist/iscsi/src/initiator.c

cvs diff -r1.18 -r1.19 src/dist/iscsi/src/Attic/initiator.c (expand / switch to unified diff)

--- src/dist/iscsi/src/Attic/initiator.c 2007/12/11 19:57:58 1.18
+++ src/dist/iscsi/src/Attic/initiator.c 2009/06/19 16:13:09 1.19
@@ -603,33 +603,33 @@ initiator_get_targets(int target, strv_t @@ -603,33 +603,33 @@ initiator_get_targets(int target, strv_t
603 } 603 }
604 } 604 }
605 605
606 return 1; 606 return 1;
607} 607}
608 608
609 609
610static int  610static int
611discovery_phase(int target, strv_t *svp) 611discovery_phase(int target, strv_t *svp)
612{ 612{
613 initiator_session_t *sess; 613 initiator_session_t *sess;
614 iscsi_parameter_value_t *vp; 614 iscsi_parameter_value_t *vp;
615 iscsi_parameter_t *ip; 615 iscsi_parameter_t *ip;
 616 unsigned i;
616 char *ptr; 617 char *ptr;
617 char *colon_ptr; 618 char *colon_ptr;
618 char *comma_ptr; 619 char *comma_ptr;
619 char port[64]; 620 char port[64];
620 char *text = NULL; 621 char *text = NULL;
621 int text_len = 0; 622 int text_len = 0;
622 int i; 
623 623
624 if (target >= CONFIG_INITIATOR_NUM_TARGETS) { 624 if (target >= CONFIG_INITIATOR_NUM_TARGETS) {
625 iscsi_trace_error(__FILE__, __LINE__, "target (%d) out of range [0..%d]\n", target, CONFIG_INITIATOR_NUM_TARGETS); 625 iscsi_trace_error(__FILE__, __LINE__, "target (%d) out of range [0..%d]\n", target, CONFIG_INITIATOR_NUM_TARGETS);
626 return -1; 626 return -1;
627 } 627 }
628 sess = g_target[target].sess; 628 sess = g_target[target].sess;
629 if ((text = iscsi_malloc_atomic(DISCOVERY_PHASE_TEXT_LEN)) == NULL) { 629 if ((text = iscsi_malloc_atomic(DISCOVERY_PHASE_TEXT_LEN)) == NULL) {
630 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc_atomic() failed\n"); 630 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc_atomic() failed\n");
631 return -1; 631 return -1;
632 } 632 }
633 /* Login to target */ 633 /* Login to target */
634 634
635 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "entering Discovery login phase with target %d (sock %#x)\n", target, (int) sess->sock); 635 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "entering Discovery login phase with target %d (sock %#x)\n", target, (int) sess->sock);
@@ -1277,27 +1277,27 @@ tx_worker_proc_i(void *arg) @@ -1277,27 +1277,27 @@ tx_worker_proc_i(void *arg)
1277 } 1277 }
1278 /* Get initiator command */ 1278 /* Get initiator command */
1279 1279
1280 if ((cmd = iscsi_queue_remove(&g_target[me->id].sess->tx_queue)) == NULL) { 1280 if ((cmd = iscsi_queue_remove(&g_target[me->id].sess->tx_queue)) == NULL) {
1281 iscsi_trace_error(__FILE__, __LINE__, "tx_worker[%d]: iscsi_queue_remove() failed\n", me->id); 1281 iscsi_trace_error(__FILE__, __LINE__, "tx_worker[%d]: iscsi_queue_remove() failed\n", me->id);
1282 ISCSI_UNLOCK(&me->work_mutex, return -1); 1282 ISCSI_UNLOCK(&me->work_mutex, return -1);
1283 goto done; 1283 goto done;
1284 } 1284 }
1285 ISCSI_UNLOCK(&me->work_mutex, return -1); 1285 ISCSI_UNLOCK(&me->work_mutex, return -1);
1286 iscsi_trace(TRACE_ISCSI_CMD, __FILE__, __LINE__, "tx_worker[%d]: dequeued initiator_cmd_t 0x%p (type %d, target %llu)\n", me->id, cmd, cmd->type, cmd->isid); 1286 iscsi_trace(TRACE_ISCSI_CMD, __FILE__, __LINE__, "tx_worker[%d]: dequeued initiator_cmd_t 0x%p (type %d, target %llu)\n", me->id, cmd, cmd->type, cmd->isid);
1287 1287
1288 /* Make sure we've got the right command */ 1288 /* Make sure we've got the right command */
1289 1289
1290 if (cmd->isid != me->id) { 1290 if (cmd->isid != (unsigned)me->id) {
1291 iscsi_trace_error(__FILE__, __LINE__, "got command %#x for target %llu, expected %d\n", cmd->type, cmd->isid, me->id); 1291 iscsi_trace_error(__FILE__, __LINE__, "got command %#x for target %llu, expected %d\n", cmd->type, cmd->isid, me->id);
1292 goto done; 1292 goto done;
1293 } 1293 }
1294 /* 1294 /*
1295 * Add to list of oustanding commands in session 1295 * Add to list of oustanding commands in session
1296 * (unless NOP_OUT without ping) 1296 * (unless NOP_OUT without ping)
1297 */ 1297 */
1298 1298
1299 if (!((cmd->type == ISCSI_NOP_OUT) && (((iscsi_nop_out_args_t *) (cmd->ptr))->tag == 0xffffffff))) { 1299 if (!((cmd->type == ISCSI_NOP_OUT) && (((iscsi_nop_out_args_t *) (cmd->ptr))->tag == 0xffffffff))) {
1300 cmd->next = NULL; 1300 cmd->next = NULL;
1301 iscsi_spin_lock(&sess->cmds_spin); 1301 iscsi_spin_lock(&sess->cmds_spin);
1302 for (ptr = sess->cmds; ((ptr) && (ptr->next != NULL)); ptr = ptr->next) { 1302 for (ptr = sess->cmds; ((ptr) && (ptr->next != NULL)); ptr = ptr->next) {
1303 } 1303 }
@@ -1569,27 +1569,27 @@ text_command_i(initiator_cmd_t * cmd) @@ -1569,27 +1569,27 @@ text_command_i(initiator_cmd_t * cmd)
1569 if (hash_insert(&g_tag_hash, cmd, text_cmd->tag) != 0) { 1569 if (hash_insert(&g_tag_hash, cmd, text_cmd->tag) != 0) {
1570 iscsi_trace_error(__FILE__, __LINE__, "hash_insert() failed\n"); 1570 iscsi_trace_error(__FILE__, __LINE__, "hash_insert() failed\n");
1571 return -1; 1571 return -1;
1572 } 1572 }
1573 /* Send text command PDU */ 1573 /* Send text command PDU */
1574 1574
1575 text_cmd->ExpStatSN = sess->ExpStatSN; 1575 text_cmd->ExpStatSN = sess->ExpStatSN;
1576 text_cmd->CmdSN = sess->CmdSN++; 1576 text_cmd->CmdSN = sess->CmdSN++;
1577 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending text command\n"); 1577 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending text command\n");
1578 if (iscsi_text_cmd_encap(header, text_cmd) != 0) { 1578 if (iscsi_text_cmd_encap(header, text_cmd) != 0) {
1579 iscsi_trace_error(__FILE__, __LINE__, "(iscsi_text_cmd_encap() failed\n"); 1579 iscsi_trace_error(__FILE__, __LINE__, "(iscsi_text_cmd_encap() failed\n");
1580 return -1; 1580 return -1;
1581 } 1581 }
1582 if (iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, text_cmd->text, text_cmd->length, 0) 1582 if ((unsigned)iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, text_cmd->text, text_cmd->length, 0)
1583 != ISCSI_HEADER_LEN + text_cmd->length) { 1583 != ISCSI_HEADER_LEN + text_cmd->length) {
1584 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed.\n"); 1584 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed.\n");
1585 return -1; 1585 return -1;
1586 } 1586 }
1587 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "text command sent ok\n"); 1587 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "text command sent ok\n");
1588 1588
1589 return 0; 1589 return 0;
1590} 1590}
1591 1591
1592static int  1592static int
1593login_command_i(initiator_cmd_t * cmd) 1593login_command_i(initiator_cmd_t * cmd)
1594{ 1594{
1595 iscsi_login_cmd_args_t *login_cmd = (iscsi_login_cmd_args_t *) cmd->ptr; 1595 iscsi_login_cmd_args_t *login_cmd = (iscsi_login_cmd_args_t *) cmd->ptr;
@@ -1603,27 +1603,27 @@ login_command_i(initiator_cmd_t * cmd) @@ -1603,27 +1603,27 @@ login_command_i(initiator_cmd_t * cmd)
1603 /* retreive the cmd ptr using the tag from the response PDU. */ 1603 /* retreive the cmd ptr using the tag from the response PDU. */
1604 1604
1605 if (hash_insert(&g_tag_hash, cmd, login_cmd->tag) != 0) { 1605 if (hash_insert(&g_tag_hash, cmd, login_cmd->tag) != 0) {
1606 iscsi_trace_error(__FILE__, __LINE__, "hash_insert() failed\n"); 1606 iscsi_trace_error(__FILE__, __LINE__, "hash_insert() failed\n");
1607 return -1; 1607 return -1;
1608 } 1608 }
1609 /* Send login command PDU */ 1609 /* Send login command PDU */
1610 login_cmd->ExpStatSN = sess->ExpStatSN; 1610 login_cmd->ExpStatSN = sess->ExpStatSN;
1611 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending login command\n"); 1611 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending login command\n");
1612 if (iscsi_login_cmd_encap(header, login_cmd) != 0) { 1612 if (iscsi_login_cmd_encap(header, login_cmd) != 0) {
1613 iscsi_trace_error(__FILE__, __LINE__, "(iscsi_login_cmd_encap() failed\n"); 1613 iscsi_trace_error(__FILE__, __LINE__, "(iscsi_login_cmd_encap() failed\n");
1614 return -1; 1614 return -1;
1615 } 1615 }
1616 if (iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, login_cmd->text, login_cmd->length, 0) 1616 if ((unsigned)iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, login_cmd->text, login_cmd->length, 0)
1617 != ISCSI_HEADER_LEN + login_cmd->length) { 1617 != ISCSI_HEADER_LEN + login_cmd->length) {
1618 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed.\n"); 1618 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed.\n");
1619 return -1; 1619 return -1;
1620 } 1620 }
1621 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "login command sent ok\n"); 1621 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "login command sent ok\n");
1622 1622
1623 return 0; 1623 return 0;
1624} 1624}
1625 1625
1626static int  1626static int
1627logout_phase_i(initiator_session_t * sess) 1627logout_phase_i(initiator_session_t * sess)
1628{ 1628{
1629 initiator_cmd_t *cmd = NULL; 1629 initiator_cmd_t *cmd = NULL;
@@ -2317,32 +2317,32 @@ scsi_command_i(initiator_cmd_t * cmd) @@ -2317,32 +2317,32 @@ scsi_command_i(initiator_cmd_t * cmd)
2317 if (modify_iov(&sg_copy, &sg_len_copy, 0, scsi_cmd->length) != 0) { 2317 if (modify_iov(&sg_copy, &sg_len_copy, 0, scsi_cmd->length) != 0) {
2318 iscsi_trace_error(__FILE__, __LINE__, "modify_iov() failed\n"); 2318 iscsi_trace_error(__FILE__, __LINE__, "modify_iov() failed\n");
2319 goto error; 2319 goto error;
2320 } 2320 }
2321 if (scsi_cmd->ahs) { 2321 if (scsi_cmd->ahs) {
2322 if (iscsi_sock_msg(sess->sock, 1, ISCSI_HEADER_LEN, header, 0) != ISCSI_HEADER_LEN) { 2322 if (iscsi_sock_msg(sess->sock, 1, ISCSI_HEADER_LEN, header, 0) != ISCSI_HEADER_LEN) {
2323 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2323 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2324 goto error; 2324 goto error;
2325 } 2325 }
2326 if (iscsi_sock_msg(sess->sock, 1, scsi_cmd->ahs_len, scsi_cmd->ahs, 0) != scsi_cmd->ahs_len) { 2326 if (iscsi_sock_msg(sess->sock, 1, scsi_cmd->ahs_len, scsi_cmd->ahs, 0) != scsi_cmd->ahs_len) {
2327 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2327 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2328 goto error; 2328 goto error;
2329 } 2329 }
2330 if (iscsi_sock_msg(sess->sock, 1, scsi_cmd->length, sg_copy, sg_len_copy) != scsi_cmd->length) { 2330 if ((unsigned)iscsi_sock_msg(sess->sock, 1, scsi_cmd->length, sg_copy, sg_len_copy) != scsi_cmd->length) {
2331 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2331 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2332 goto error; 2332 goto error;
2333 } 2333 }
2334 } else { 2334 } else {
2335 if (iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, sg_copy, scsi_cmd->length, sg_len_copy) 2335 if ((unsigned)iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, sg_copy, scsi_cmd->length, sg_len_copy)
2336 != ISCSI_HEADER_LEN + scsi_cmd->length) { 2336 != ISCSI_HEADER_LEN + scsi_cmd->length) {
2337 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed\n"); 2337 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed\n");
2338 goto error; 2338 goto error;
2339 } 2339 }
2340 } 2340 }
2341 scsi_cmd->bytes_sent += scsi_cmd->length; 2341 scsi_cmd->bytes_sent += scsi_cmd->length;
2342 } else { 2342 } else {
2343 if (iscsi_sock_msg(sess->sock, 1, ISCSI_HEADER_LEN, header, 0) != ISCSI_HEADER_LEN) { 2343 if (iscsi_sock_msg(sess->sock, 1, ISCSI_HEADER_LEN, header, 0) != ISCSI_HEADER_LEN) {
2344 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2344 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2345 goto error; 2345 goto error;
2346 } 2346 }
2347 if (scsi_cmd->ahs_len) { 2347 if (scsi_cmd->ahs_len) {
2348 if (iscsi_sock_msg(sess->sock, 1, scsi_cmd->ahs_len, scsi_cmd->ahs, 0) != scsi_cmd->ahs_len) { 2348 if (iscsi_sock_msg(sess->sock, 1, scsi_cmd->ahs_len, scsi_cmd->ahs, 0) != scsi_cmd->ahs_len) {
@@ -2439,27 +2439,27 @@ scsi_command_i(initiator_cmd_t * cmd) @@ -2439,27 +2439,27 @@ scsi_command_i(initiator_cmd_t * cmd)
2439 2439
2440 /* 2440 /*
2441 * Data was not fragmented; use the original 2441 * Data was not fragmented; use the original
2442 * iovec. 2442 * iovec.
2443 */ 2443 */
2444 2444
2445 sg_which = sg; 2445 sg_which = sg;
2446 sg_len_which = sg_len; 2446 sg_len_which = sg_len;
2447 } 2447 }
2448 2448
2449 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending write data PDU (offset %u, len %u, sg_len %u)\n", 2449 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending write data PDU (offset %u, len %u, sg_len %u)\n",
2450 data.offset, data.length, sg_len_which); 2450 data.offset, data.length, sg_len_which);
2451 2451
2452 if (iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, sg_which, data.length, sg_len_which) 2452 if ((unsigned)iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, sg_which, data.length, sg_len_which)
2453 != ISCSI_HEADER_LEN + data.length) { 2453 != ISCSI_HEADER_LEN + data.length) {
2454 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed\n"); 2454 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed\n");
2455 goto error; 2455 goto error;
2456 } 2456 }
2457 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sent write data PDU (offset %u, len %u)\n", data.offset, data.length); 2457 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sent write data PDU (offset %u, len %u)\n", data.offset, data.length);
2458 scsi_cmd->bytes_sent += data.length; 2458 scsi_cmd->bytes_sent += data.length;
2459 } while ((scsi_cmd->bytes_sent < scsi_cmd->trans_len) 2459 } while ((scsi_cmd->bytes_sent < scsi_cmd->trans_len)
2460 && ((scsi_cmd->bytes_sent < sess->sess_params.first_burst_length) 2460 && ((scsi_cmd->bytes_sent < sess->sess_params.first_burst_length)
2461 || (!sess->sess_params.first_burst_length))); 2461 || (!sess->sess_params.first_burst_length)));
2462 if (scsi_cmd->trans_len - scsi_cmd->bytes_sent) { 2462 if (scsi_cmd->trans_len - scsi_cmd->bytes_sent) {
2463 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "REACHED FIRST BURST\n"); 2463 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "REACHED FIRST BURST\n");
2464 } 2464 }
2465 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "successfully sent %u of %u bytes write data\n", scsi_cmd->bytes_sent, scsi_cmd->trans_len); 2465 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "successfully sent %u of %u bytes write data\n", scsi_cmd->bytes_sent, scsi_cmd->trans_len);
@@ -2546,27 +2546,27 @@ async_msg_i(initiator_session_t * sess,  @@ -2546,27 +2546,27 @@ async_msg_i(initiator_session_t * sess,
2546 } 2546 }
2547 sess->CmdSN = msg.ExpCmdSN; 2547 sess->CmdSN = msg.ExpCmdSN;
2548 sess->MaxCmdSN = msg.MaxCmdSN; 2548 sess->MaxCmdSN = msg.MaxCmdSN;
2549 sess->ExpStatSN = msg.StatSN + 1; 2549 sess->ExpStatSN = msg.StatSN + 1;
2550 2550
2551 /* Read Sense Data */ 2551 /* Read Sense Data */
2552 if (msg.length) { 2552 if (msg.length) {
2553 uint8_t *sense_data = NULL; 2553 uint8_t *sense_data = NULL;
2554 if ((sense_data = iscsi_malloc(msg.length)) == NULL) { 2554 if ((sense_data = iscsi_malloc(msg.length)) == NULL) {
2555 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc() failed\n"); 2555 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc() failed\n");
2556 return -1; 2556 return -1;
2557 } 2557 }
2558 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes sense data \n", msg.length); 2558 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes sense data \n", msg.length);
2559 if (iscsi_sock_msg(sess->sock, 0, msg.length, sense_data, 0) != msg.length) { 2559 if ((unsigned)iscsi_sock_msg(sess->sock, 0, msg.length, sense_data, 0) != msg.length) {
2560 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2560 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2561 if (sense_data != NULL) 2561 if (sense_data != NULL)
2562 iscsi_free(sense_data); 2562 iscsi_free(sense_data);
2563 return -1; 2563 return -1;
2564 } 2564 }
2565 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "read %d bytes sense data ok (currently discarding)\n", msg.length); 2565 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "read %d bytes sense data ok (currently discarding)\n", msg.length);
2566 if (sense_data != NULL) 2566 if (sense_data != NULL)
2567 iscsi_free(sense_data); 2567 iscsi_free(sense_data);
2568 } else { 2568 } else {
2569 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "no sense data available\n"); 2569 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "no sense data available\n");
2570 } 2570 }
2571 2571
2572 switch (msg.AsyncEvent) { 2572 switch (msg.AsyncEvent) {
@@ -2589,48 +2589,48 @@ async_msg_i(initiator_session_t * sess,  @@ -2589,48 +2589,48 @@ async_msg_i(initiator_session_t * sess,
2589 default: 2589 default:
2590 break; 2590 break;
2591 } 2591 }
2592 2592
2593 return 0; 2593 return 0;
2594} 2594}
2595 2595
2596static int  2596static int
2597nop_in_i(initiator_session_t * sess, initiator_cmd_t * cmd, uint8_t *header) 2597nop_in_i(initiator_session_t * sess, initiator_cmd_t * cmd, uint8_t *header)
2598{ 2598{
2599 iscsi_nop_out_args_t *nop_out = NULL; 2599 iscsi_nop_out_args_t *nop_out = NULL;
2600 iscsi_nop_in_args_t nop_in; 2600 iscsi_nop_in_args_t nop_in;
2601 uint8_t *ping_data = NULL; 2601 uint8_t *ping_data = NULL;
2602 int i; 2602 unsigned i;
2603 2603
2604 if (cmd) { 2604 if (cmd) {
2605 nop_out = (iscsi_nop_out_args_t *) cmd->ptr; 2605 nop_out = (iscsi_nop_out_args_t *) cmd->ptr;
2606 } else { 2606 } else {
2607 iscsi_trace_error(__FILE__, __LINE__, "no initiator_cmd_t associated with this NOP_IN\n"); 2607 iscsi_trace_error(__FILE__, __LINE__, "no initiator_cmd_t associated with this NOP_IN\n");
2608 } 2608 }
2609 if (iscsi_nop_in_decap(header, &nop_in) != 0) { 2609 if (iscsi_nop_in_decap(header, &nop_in) != 0) {
2610 iscsi_trace_error(__FILE__, __LINE__, "iscsi_nop_in() failed\n"); 2610 iscsi_trace_error(__FILE__, __LINE__, "iscsi_nop_in() failed\n");
2611 return -1; 2611 return -1;
2612 } 2612 }
2613 if (cmd) 2613 if (cmd)
2614 RETURN_NOT_EQUAL("nop_in.length", nop_in.length, nop_out->length, NO_CLEANUP, -1); 2614 RETURN_NOT_EQUAL("nop_in.length", nop_in.length, nop_out->length, NO_CLEANUP, -1);
2615 if (nop_in.length) { 2615 if (nop_in.length) {
2616 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes ping data\n", nop_in.length); 2616 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes ping data\n", nop_in.length);
2617 if ((ping_data = iscsi_malloc_atomic(nop_in.length)) == NULL) { 2617 if ((ping_data = iscsi_malloc_atomic(nop_in.length)) == NULL) {
2618 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc_atomic() failed\n"); 2618 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc_atomic() failed\n");
2619 return -1; 2619 return -1;
2620 } 2620 }
2621#define NOI_CLEANUP {if (ping_data) iscsi_free_atomic(ping_data);} 2621#define NOI_CLEANUP {if (ping_data) iscsi_free_atomic(ping_data);}
2622#define NOI_ERROR {NOI_CLEANUP; return -1;} 2622#define NOI_ERROR {NOI_CLEANUP; return -1;}
2623 if (iscsi_sock_msg(sess->sock, 0, nop_in.length, ping_data, 0) != nop_in.length) { 2623 if ((unsigned)iscsi_sock_msg(sess->sock, 0, nop_in.length, ping_data, 0) != nop_in.length) {
2624 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2624 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2625 NOI_ERROR; 2625 NOI_ERROR;
2626 } 2626 }
2627 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "successfully read %d bytes ping data\n", nop_in.length); 2627 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "successfully read %d bytes ping data\n", nop_in.length);
2628 if (cmd) { 2628 if (cmd) {
2629 for (i = 0; i < nop_in.length; i++) { 2629 for (i = 0; i < nop_in.length; i++) {
2630 if (nop_out->data[i] != ping_data[i]) { 2630 if (nop_out->data[i] != ping_data[i]) {
2631 iscsi_trace_error(__FILE__, __LINE__, "Bad ping data[%d]. Got %#x, expected %#x\n", i, ping_data[i], nop_out->data[i]); 2631 iscsi_trace_error(__FILE__, __LINE__, "Bad ping data[%d]. Got %#x, expected %#x\n", i, ping_data[i], nop_out->data[i]);
2632 NOI_ERROR; 2632 NOI_ERROR;
2633 } 2633 }
2634 } 2634 }
2635 } 2635 }
2636 } 2636 }
@@ -2644,27 +2644,27 @@ nop_in_i(initiator_session_t * sess, ini @@ -2644,27 +2644,27 @@ nop_in_i(initiator_session_t * sess, ini
2644 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending %d byte ping response\n", nop_in.length); 2644 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending %d byte ping response\n", nop_in.length);
2645 (void) memset(&nop_out_args, 0x0, sizeof(nop_out_args)); 2645 (void) memset(&nop_out_args, 0x0, sizeof(nop_out_args));
2646 nop_out_args.tag = 0xffffffff; 2646 nop_out_args.tag = 0xffffffff;
2647 nop_out_args.immediate = 0x40; 2647 nop_out_args.immediate = 0x40;
2648 nop_out_args.transfer_tag = nop_in.transfer_tag; 2648 nop_out_args.transfer_tag = nop_in.transfer_tag;
2649 nop_out_args.length = nop_in.length; 2649 nop_out_args.length = nop_in.length;
2650 nop_out_args.lun = nop_in.lun; 2650 nop_out_args.lun = nop_in.lun;
2651 nop_out_args.ExpStatSN = sess->ExpStatSN; 2651 nop_out_args.ExpStatSN = sess->ExpStatSN;
2652 nop_out_args.CmdSN = sess->CmdSN; 2652 nop_out_args.CmdSN = sess->CmdSN;
2653 if (iscsi_nop_out_encap(nop_header, &nop_out_args) != 0) { 2653 if (iscsi_nop_out_encap(nop_header, &nop_out_args) != 0) {
2654 iscsi_trace_error(__FILE__, __LINE__, "iscsi_nop_out_encap() failed\n"); 2654 iscsi_trace_error(__FILE__, __LINE__, "iscsi_nop_out_encap() failed\n");
2655 NOI_ERROR; 2655 NOI_ERROR;
2656 } 2656 }
2657 if (iscsi_sock_send_header_and_data(sess->sock, nop_header, nop_out_args.length, ping_data, nop_in.length, 0) != nop_in.length) { 2657 if ((unsigned)iscsi_sock_send_header_and_data(sess->sock, nop_header, nop_out_args.length, ping_data, nop_in.length, 0) != nop_in.length) {
2658 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2658 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2659 NOI_ERROR; 2659 NOI_ERROR;
2660 } 2660 }
2661 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "successfully sent %d byte ping response\n", nop_in.length); 2661 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "successfully sent %d byte ping response\n", nop_in.length);
2662 } 2662 }
2663 NOI_CLEANUP; 2663 NOI_CLEANUP;
2664 /* Check and update numbering */ 2664 /* Check and update numbering */
2665 sess->ExpStatSN = nop_in.StatSN + 1; 2665 sess->ExpStatSN = nop_in.StatSN + 1;
2666 /* 2666 /*
2667 * RETURN_NOT_EQUAL("StatSN", nop_in.StatSN, sess->ExpStatSN++, 2667 * RETURN_NOT_EQUAL("StatSN", nop_in.StatSN, sess->ExpStatSN++,
2668 * NO_CLEANUP, -1); 2668 * NO_CLEANUP, -1);
2669 */ 2669 */
2670 sess->CmdSN = nop_in.ExpCmdSN; 2670 sess->CmdSN = nop_in.ExpCmdSN;
@@ -2809,27 +2809,27 @@ scsi_r2t_i(initiator_session_t * sess, i @@ -2809,27 +2809,27 @@ scsi_r2t_i(initiator_session_t * sess, i
2809 FF_CLEANUP; 2809 FF_CLEANUP;
2810 return -1; 2810 return -1;
2811 } 2811 }
2812 sg_which = sg_copy; 2812 sg_which = sg_copy;
2813 sg_len_which = sg_len_copy; 2813 sg_len_which = sg_len_copy;
2814 } else { 2814 } else {
2815 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "using original iovec for R2T transfer (offset %u, length %u)\n", 2815 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "using original iovec for R2T transfer (offset %u, length %u)\n",
2816 r2t.offset, r2t.length); 2816 r2t.offset, r2t.length);
2817 sg_which = sg; 2817 sg_which = sg;
2818 sg_len_which = sg_len; 2818 sg_len_which = sg_len;
2819 } 2819 }
2820 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending R2T write data PDU (offset %u, len %u, sg_len %u)\n", 2820 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sending R2T write data PDU (offset %u, len %u, sg_len %u)\n",
2821 data.offset, data.length, sg_len_which); 2821 data.offset, data.length, sg_len_which);
2822 if (iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, sg_which, data.length, sg_len_which) 2822 if ((unsigned)iscsi_sock_send_header_and_data(sess->sock, header, ISCSI_HEADER_LEN, sg_which, data.length, sg_len_which)
2823 != ISCSI_HEADER_LEN + data.length) { 2823 != ISCSI_HEADER_LEN + data.length) {
2824 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed\n"); 2824 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_send_header_and_data() failed\n");
2825 FF_CLEANUP; 2825 FF_CLEANUP;
2826 return -1; 2826 return -1;
2827 } 2827 }
2828 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sent write data PDU OK (offset %u, len %u)\n", data.offset, data.length); 2828 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "sent write data PDU OK (offset %u, len %u)\n", data.offset, data.length);
2829 bytes_sent += data.length; 2829 bytes_sent += data.length;
2830 scsi_cmd->bytes_sent += data.length; 2830 scsi_cmd->bytes_sent += data.length;
2831 } while (bytes_sent < r2t.length); 2831 } while (bytes_sent < r2t.length);
2832 FF_CLEANUP; 2832 FF_CLEANUP;
2833 if (hash_insert(&g_tag_hash, cmd, scsi_cmd->tag) != 0) { 2833 if (hash_insert(&g_tag_hash, cmd, scsi_cmd->tag) != 0) {
2834 iscsi_trace_error(__FILE__, __LINE__, "hash_insert() failed\n"); 2834 iscsi_trace_error(__FILE__, __LINE__, "hash_insert() failed\n");
2835 return -1; 2835 return -1;
@@ -2899,27 +2899,27 @@ scsi_response_i(initiator_session_t * se @@ -2899,27 +2899,27 @@ scsi_response_i(initiator_session_t * se
2899 } else if (scsi_cmd->input) { 2899 } else if (scsi_cmd->input) {
2900 2900
2901 2901
2902 } 2902 }
2903 } else if (scsi_rsp.length) { 2903 } else if (scsi_rsp.length) {
2904 uint8_t *sense_data = NULL; 2904 uint8_t *sense_data = NULL;
2905 2905
2906 if ((sense_data = iscsi_malloc(scsi_rsp.length)) == NULL) { 2906 if ((sense_data = iscsi_malloc(scsi_rsp.length)) == NULL) {
2907 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc() failed\n"); 2907 iscsi_trace_error(__FILE__, __LINE__, "iscsi_malloc() failed\n");
2908 return -1; 2908 return -1;
2909 } 2909 }
2910 iscsi_trace_error(__FILE__, __LINE__, "reading %d bytes sense data (recv_sg_len %u)\n", 2910 iscsi_trace_error(__FILE__, __LINE__, "reading %d bytes sense data (recv_sg_len %u)\n",
2911 scsi_rsp.length, scsi_cmd->recv_sg_len); 2911 scsi_rsp.length, scsi_cmd->recv_sg_len);
2912 if (iscsi_sock_msg(sess->sock, 0, scsi_rsp.length, sense_data, 0) != scsi_rsp.length) { 2912 if ((unsigned)iscsi_sock_msg(sess->sock, 0, scsi_rsp.length, sense_data, 0) != scsi_rsp.length) {
2913 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 2913 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
2914 if (sense_data != NULL) 2914 if (sense_data != NULL)
2915 iscsi_free(sense_data); 2915 iscsi_free(sense_data);
2916 return -1; 2916 return -1;
2917 } 2917 }
2918 iscsi_trace_error(__FILE__, __LINE__, "read %d bytes sense data ok (currently discarding)\n", scsi_rsp.length); 2918 iscsi_trace_error(__FILE__, __LINE__, "read %d bytes sense data ok (currently discarding)\n", scsi_rsp.length);
2919 if (sense_data != NULL) 2919 if (sense_data != NULL)
2920 iscsi_free(sense_data); 2920 iscsi_free(sense_data);
2921 } else { 2921 } else {
2922 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "no sense data available\n"); 2922 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "no sense data available\n");
2923 } 2923 }
2924 2924
2925 /* Check and update numbering */ 2925 /* Check and update numbering */
@@ -3041,39 +3041,39 @@ scsi_read_data_i(initiator_session_t * s @@ -3041,39 +3041,39 @@ scsi_read_data_i(initiator_session_t * s
3041 total_len = 0; 3041 total_len = 0;
3042 for (i = 0; i < sg_len; i++) { 3042 for (i = 0; i < sg_len; i++) {
3043 total_len += sg[i].iov_len; 3043 total_len += sg[i].iov_len;
3044 if (total_len >= data.length) { 3044 if (total_len >= data.length) {
3045 break; 3045 break;
3046 } 3046 }
3047 } 3047 }
3048 sg[i].iov_len -= (total_len - data.length); 3048 sg[i].iov_len -= (total_len - data.length);
3049 sg_len = i + 1; 3049 sg_len = i + 1;
3050 } else { 3050 } else {
3051 sg = (struct iovec *) scsi_cmd->recv_data; 3051 sg = (struct iovec *) scsi_cmd->recv_data;
3052 } 3052 }
3053 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes into sg buffer (total offset %u)\n", data.length, data.offset); 3053 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes into sg buffer (total offset %u)\n", data.length, data.offset);
3054 if ((rc = iscsi_sock_msg(sess->sock, 0, data.length, (uint8_t *) sg, sg_len)) != data.length) { 3054 if ((rc = iscsi_sock_msg(sess->sock, 0, data.length, (uint8_t *) sg, sg_len)) != (int)data.length) {
3055 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed: got %u, expected %u\n", rc, data.length); 3055 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed: got %u, expected %u\n", rc, data.length);
3056 if (sg_orig) 3056 if (sg_orig)
3057 iscsi_free_atomic(sg_orig); 3057 iscsi_free_atomic(sg_orig);
3058 return -1; 3058 return -1;
3059 } 3059 }
3060 scsi_cmd->bytes_recv += data.length; 3060 scsi_cmd->bytes_recv += data.length;
3061 if (sg_orig) 3061 if (sg_orig)
3062 iscsi_free_atomic(sg_orig); 3062 iscsi_free_atomic(sg_orig);
3063 } else { 3063 } else {
3064 if (data.length) { 3064 if (data.length) {
3065 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes into dest buffer (offset %u)\n", data.length, data.offset); 3065 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "reading %d bytes into dest buffer (offset %u)\n", data.length, data.offset);
3066 if (iscsi_sock_msg(sess->sock, 0, data.length, scsi_cmd->recv_data + data.offset, 0) != data.length) { 3066 if (iscsi_sock_msg(sess->sock, 0, data.length, scsi_cmd->recv_data + data.offset, 0) != (int)data.length) {
3067 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n"); 3067 iscsi_trace_error(__FILE__, __LINE__, "iscsi_sock_msg() failed\n");
3068 return -1; 3068 return -1;
3069 } 3069 }
3070 scsi_cmd->bytes_recv += data.length; 3070 scsi_cmd->bytes_recv += data.length;
3071 } 3071 }
3072 } 3072 }
3073 3073
3074 3074
3075 /* Check for status */ 3075 /* Check for status */
3076 3076
3077 if (data.S_bit) { 3077 if (data.S_bit) {
3078 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "received status with final PDU\n"); 3078 iscsi_trace(TRACE_ISCSI_DEBUG, __FILE__, __LINE__, "received status with final PDU\n");
3079 RETURN_NOT_EQUAL("Final Bit", data.final, 1, NO_CLEANUP, -1); 3079 RETURN_NOT_EQUAL("Final Bit", data.final, 1, NO_CLEANUP, -1);