iscsi_queue_pdu() can never fail, make it void

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
Ronnie Sahlberg
2025-04-20 13:27:47 +10:00
parent 37bc6fcd81
commit 3fc5d2996b
20 changed files with 49 additions and 102 deletions

View File

@@ -344,10 +344,11 @@ void iscsi_cancel_pdus(struct iscsi_context *iscsi);
void iscsi_cancel_lun_pdus(struct iscsi_context *iscsi, uint32_t lun);
int iscsi_pdu_add_data(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
const unsigned char *dptr, int dsize);
int iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
void iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
int iscsi_add_data(struct iscsi_context *iscsi, struct iscsi_data *data,
const unsigned char *dptr, int dsize, int pdualignment);
void iscsi_add_to_outqueue(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
struct scsi_task;
void iscsi_pdu_set_cdb(struct iscsi_pdu *pdu, struct scsi_task *task);
@@ -417,9 +418,6 @@ void iscsi_decrement_iface_rr(void);
void __attribute__((format(printf, 3, 4)))
iscsi_log_message(struct iscsi_context *iscsi, int level, const char *format, ...);
void
iscsi_add_to_outqueue(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
int iscsi_serial32_compare(uint32_t s1, uint32_t s2);
uint32_t iscsi_itt_post_increment(struct iscsi_context *iscsi);
@@ -443,7 +441,7 @@ union socket_address;
typedef struct iscsi_transport {
int (*connect)(struct iscsi_context *iscsi, union socket_address *sa, int ai_family);
int (*queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
void (*queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
struct iscsi_pdu* (*new_pdu)(struct iscsi_context *iscsi, size_t size);
int (*disconnect)(struct iscsi_context *iscsi);
void (*free_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);

View File

@@ -73,12 +73,7 @@ iscsi_discovery_async(struct iscsi_context *iscsi, iscsi_command_cb cb,
pdu->callback = cb;
pdu->private_data = private_data;
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "Out-of-memory: failed to queue iscsi "
"text pdu.");
iscsi->drv->free_pdu(iscsi, pdu);
return -1;
}
iscsi_queue_pdu(iscsi, pdu);
return 0;
}

View File

@@ -128,12 +128,7 @@ iscsi_send_data_out(struct iscsi_context *iscsi, struct iscsi_pdu *cmd_pdu,
/* update data segment length */
scsi_set_uint32(&pdu->outdata.data[4], pdu->payload_len);
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "Out-of-memory: failed to queue iscsi "
"scsi pdu.");
iscsi->drv->free_pdu(iscsi, pdu);
goto error;
}
iscsi_queue_pdu(iscsi, pdu);
tot_len -= len;
offset += len;
@@ -280,12 +275,7 @@ iscsi_scsi_command_async(struct iscsi_context *iscsi, int lun,
pdu->callback = iscsi_scsi_response_cb;
pdu->private_data = &pdu->scsi_cbdata;
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "Out-of-memory: failed to queue iscsi "
"scsi pdu.");
iscsi->drv->free_pdu(iscsi, pdu);
return -1;
}
iscsi_queue_pdu(iscsi, pdu);
iscsi->cmdsn++;
/* The F flag is not set. This means we haven't sent all the unsolicited

View File

@@ -982,27 +982,27 @@ iscsi_iser_revive_queued_pdus(struct iscsi_context *iscsi) {
* Need to be compatible to TCP which has real queue,
* in iSER pdus with cmdsn not exceeds maxcmdsn are already sent.
*/
static int
static void
iscsi_iser_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) {
if (pdu == NULL) {
iscsi_set_error(iscsi, "trying to queue NULL pdu");
return -1;
return;
}
if (pdu->outdata.data[0] == ISCSI_PDU_NOP_OUT &&
iscsi_iser_cm_event(iscsi) != 0) {
iscsi_service_reconnect_if_loggedin(iscsi);
return -1;
return;
}
if (iscsi->outqueue != NULL ||
(iscsi_serial32_compare(pdu->cmdsn, iscsi->maxcmdsn) > 0
&& !(pdu->outdata.data[0] & ISCSI_PDU_IMMEDIATE))) {
iscsi_add_to_outqueue(iscsi, pdu);
return 0;
return;
}
return iscsi_iser_send_pdu(iscsi, pdu);
iscsi_iser_send_pdu(iscsi, pdu);
}

View File

@@ -1236,12 +1236,7 @@ iscsi_login_async(struct iscsi_context *iscsi, iscsi_command_cb cb,
pdu->callback = cb;
pdu->private_data = private_data;
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "Out-of-memory: failed to queue iscsi "
"pdu.");
iscsi->drv->free_pdu(iscsi, pdu);
return -1;
}
iscsi_queue_pdu(iscsi, pdu);
return 0;
}
@@ -1587,12 +1582,7 @@ iscsi_logout_async(struct iscsi_context *iscsi, iscsi_command_cb cb,
pdu->callback = cb;
pdu->private_data = private_data;
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "Out-of-memory: failed to queue iscsi "
"logout pdu.");
iscsi->drv->free_pdu(iscsi, pdu);
return -1;
}
iscsi_queue_pdu(iscsi, pdu);
return 0;
}

View File

@@ -77,11 +77,7 @@ iscsi_nop_out_async(struct iscsi_context *iscsi, iscsi_command_cb cb,
}
}
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "failed to queue iscsi nop-out pdu");
iscsi->drv->free_pdu(iscsi, pdu);
return -1;
}
iscsi_queue_pdu(iscsi, pdu);
iscsi->cmdsn++;
iscsi->nops_in_flight++;
@@ -122,11 +118,7 @@ iscsi_send_target_nop_out(struct iscsi_context *iscsi, uint32_t ttt, uint32_t lu
/* cmdsn is not increased if Immediate delivery*/
iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn);
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "failed to queue iscsi nop-out pdu");
iscsi->drv->free_pdu(iscsi, pdu);
return -1;
}
iscsi_queue_pdu(iscsi, pdu);
ISCSI_LOG(iscsi, (iscsi->nops_in_flight > 1) ? 1 : 6,
"NOP Out Send (nops_in_flight: %d, pdu->cmdsn %08x, pdu->itt %08x, pdu->ttt %08x, pdu->lun %8x, iscsi->maxcmdsn %08x, iscsi->expcmdsn %08x)",

View File

@@ -937,16 +937,10 @@ iscsi_timeout_scan(struct iscsi_context *iscsi)
}
}
int
void
iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
int ret;
iscsi_mt_mutex_lock(&iscsi->iscsi_mutex);
ret = iscsi->drv->queue_pdu(iscsi, pdu);
iscsi_mt_mutex_unlock(&iscsi->iscsi_mutex);
return ret;
iscsi->drv->queue_pdu(iscsi, pdu);
}
void

View File

@@ -1136,17 +1136,10 @@ iscsi_service(struct iscsi_context *iscsi, int revents)
return iscsi->drv->service(iscsi, revents);
}
static int iscsi_tcp_queue_pdu(struct iscsi_context *iscsi,
static void iscsi_tcp_queue_pdu(struct iscsi_context *iscsi,
struct iscsi_pdu *pdu)
{
if (pdu == NULL) {
iscsi_set_error(iscsi, "trying to queue NULL pdu");
return -1;
}
iscsi_add_to_outqueue(iscsi, pdu);
return 0;
}
void

View File

@@ -80,11 +80,7 @@ iscsi_task_mgmt_async(struct iscsi_context *iscsi,
pdu->callback = cb;
pdu->private_data = private_data;
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
iscsi_set_error(iscsi, "failed to queue iscsi taskmgmt pdu");
iscsi->drv->free_pdu(iscsi, pdu);
return -1;
}
iscsi_queue_pdu(iscsi, pdu);
return 0;
}

View File

@@ -739,7 +739,7 @@ static struct test_family families[] = {
*/
struct scsi_task *task;
unsigned char *read_write_buf;
int (*orig_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
void (*orig_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu);
static void
print_usage(void)

View File

@@ -35,8 +35,8 @@
/* globals between setup, tests, and teardown */
extern struct scsi_task *task;
extern unsigned char *read_write_buf;
extern int (*orig_queue_pdu)(struct iscsi_context *iscsi,
struct iscsi_pdu *pdu);
extern void (*orig_queue_pdu)(struct iscsi_context *iscsi,
struct iscsi_pdu *pdu);
#ifndef HAVE_CU_SUITEINFO_PSETUPFUNC
/* libcunit version 1 */

View File

@@ -28,13 +28,13 @@
static int new_nlb = -1;
static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
static void my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
if (pdu->outdata.data[0] != ISCSI_PDU_SCSI_REQUEST && new_nlb >= 0) {
/* change NUMBER OF LOGICAL BLOCKS to new_nlb */
pdu->outdata.data[32 + 13] = new_nlb;
}
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
void

View File

@@ -77,7 +77,7 @@ test_iscsi_strip_tag(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
return 0;
}
static int
static void
chap_mod_strip_replace_queue(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
const char *new_chap_a)
{
@@ -93,41 +93,41 @@ chap_mod_strip_replace_queue(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
goto out;
}
if (ret < 0) {
return ret;
return;
}
ret = iscsi_pdu_add_data(iscsi, pdu, (const unsigned char *)new_chap_a,
strlen(new_chap_a) + 1);
if (ret < 0) {
return ret;
return;
}
logging(LOG_VERBOSE, "replaced Login PDU CHAP_A setting with %s", new_chap_a);
out:
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
static int
static void
chap_mod_many_types_queue(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
return chap_mod_strip_replace_queue(iscsi, pdu, "CHAP_A=5,6,7,8");
chap_mod_strip_replace_queue(iscsi, pdu, "CHAP_A=5,6,7,8");
}
static int
static void
chap_mod_no_type_queue(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
return chap_mod_strip_replace_queue(iscsi, pdu, "CHAP_A=");
chap_mod_strip_replace_queue(iscsi, pdu, "CHAP_A=");
}
static int
static void
chap_mod_bad_type_queue(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
/* value starts with '5', to catch targets that only check one byte */
return chap_mod_strip_replace_queue(iscsi, pdu, "CHAP_A=56");
chap_mod_strip_replace_queue(iscsi, pdu, "CHAP_A=56");
}
static int
test_iscsi_chap_login(int (*test_queue_pdu)(struct iscsi_context *iscsi,
struct iscsi_pdu *pdu))
test_iscsi_chap_login(void (*test_queue_pdu)(struct iscsi_context *iscsi,
struct iscsi_pdu *pdu))
{
struct iscsi_context *iscsi;
struct iscsi_url *iscsi_url;

View File

@@ -26,7 +26,7 @@
static int change_cmdsn;
static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
static void my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
switch (change_cmdsn) {
case 1:
@@ -45,7 +45,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
}
change_cmdsn = 0;
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
void test_iscsi_cmdsn_toohigh(void)

View File

@@ -26,7 +26,7 @@
static int change_cmdsn;
static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
static void my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
switch (change_cmdsn) {
case 1:
@@ -45,7 +45,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
}
change_cmdsn = 0;
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
void test_iscsi_cmdsn_toolow(void)

View File

@@ -26,7 +26,7 @@
static int change_datasn;
static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
static void my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
uint32_t datasn;
@@ -57,7 +57,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
break;
}
out:
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
void test_iscsi_datasn_invalid(void)

View File

@@ -148,8 +148,7 @@ test_iscsi_text_req_queue(struct iscsi_context *iscsi,
pdu->callback = cb;
pdu->private_data = state;
ret = iscsi_queue_pdu(iscsi, pdu);
CU_ASSERT_EQUAL_FATAL(ret, 0);
iscsi_queue_pdu(iscsi, pdu);
state->dispatched++;
logging(LOG_VERBOSE, "queued Text request %d with %s",
state->dispatched, kv_data);

View File

@@ -26,7 +26,7 @@
static int change_num;
static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
static void my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
switch (change_num) {
case 1:
@@ -44,7 +44,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
}
change_num = 0;
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
void test_sanitize_block_erase_reserved(void)

View File

@@ -26,7 +26,7 @@
static int change_num;
static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
static void my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
switch (change_num) {
case 1:
@@ -44,7 +44,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
}
change_num = 0;
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
void test_sanitize_crypto_erase_reserved(void)

View File

@@ -27,7 +27,7 @@
static int change_num;
static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
static void my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
{
switch (change_num) {
case 1:
@@ -45,7 +45,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu
}
change_num = 0;
return orig_queue_pdu(iscsi, pdu);
orig_queue_pdu(iscsi, pdu);
}
void test_sanitize_overwrite_reserved(void)