static struct scsi_task *iscsi_do_inquiry(struct iscsi_context *iscsi, int lun,

                                          int evpd, int pc, void **inq, Error **errp)

{

    int full_size;

    struct scsi_task *task = NULL;

    task = iscsi_inquiry_sync(iscsi, lun, evpd, pc, 64);

    if (task == NULL || task->status != SCSI_STATUS_GOOD) {

        goto fail;

    }

    full_size = scsi_datain_getfullsize(task);

    if (full_size > task->datain.size) {

        scsi_free_scsi_task(task);



        /* we need more data for the full list */

        task = iscsi_inquiry_sync(iscsi, lun, evpd, pc, full_size);

        if (task == NULL || task->status != SCSI_STATUS_GOOD) {

            goto fail;

        }

    }



    *inq = scsi_datain_unmarshall(task);

    if (*inq == NULL) {

        error_setg(errp, "iSCSI: failed to unmarshall inquiry datain blob");

        goto fail;

    }



    return task;



fail:

    if (!error_is_set(errp)) {

        error_setg(errp, "iSCSI: Inquiry command failed : %s",

                   iscsi_get_error(iscsi));

    }

    if (task != NULL) {

        scsi_free_scsi_task(task);

    }

    return NULL;

}

static struct scsi_task *iscsi_do_inquiry(struct iscsi_context *iscsi, int lun,

                                          int evpd, int pc, void **inq, Error **errp)

{

    int full_size;

    struct scsi_task *task = NULL;

    task = iscsi_inquiry_sync(iscsi, lun, evpd, pc, 64);

    if (task == NULL || task->status != SCSI_STATUS_GOOD) {

        goto fail;

    }

    full_size = scsi_datain_getfullsize(task);

    if (full_size > task->datain.size) {

        scsi_free_scsi_task(task);



        

        task = iscsi_inquiry_sync(iscsi, lun, evpd, pc, full_size);

        if (task == NULL || task->status != SCSI_STATUS_GOOD) {

            goto fail;

        }

    }



    *inq = scsi_datain_unmarshall(task);

    if (*inq == NULL) {

        error_setg(errp, "iSCSI: failed to unmarshall inquiry datain blob");

        goto fail;

    }



    return task;



fail:

    if (!error_is_set(errp)) {

        error_setg(errp, "iSCSI: Inquiry command failed : %s",

                   iscsi_get_error(iscsi));

    }

    if (task != NULL) {

        scsi_free_scsi_task(task);

    }

    return NULL;

}

        goto fail;     if (!error_is_set(errp)) {         error_setg(errp, "iSCSI: Inquiry command failed : %s",                    iscsi_get_error(iscsi));
static struct scsi_task *FUNC_0(struct iscsi_context *VAR_0, int VAR_1,

                                          int VAR_2, int VAR_3, void **VAR_4, Error **VAR_5)

{

    int VAR_6;

    struct scsi_task *VAR_7 = NULL;

    VAR_7 = iscsi_inquiry_sync(VAR_0, VAR_1, VAR_2, VAR_3, 64);

    if (VAR_7 == NULL || VAR_7->status != SCSI_STATUS_GOOD) {

        goto fail;

    }

    VAR_6 = scsi_datain_getfullsize(VAR_7);

    if (VAR_6 > VAR_7->datain.size) {

        scsi_free_scsi_task(VAR_7);



        

        VAR_7 = iscsi_inquiry_sync(VAR_0, VAR_1, VAR_2, VAR_3, VAR_6);

        if (VAR_7 == NULL || VAR_7->status != SCSI_STATUS_GOOD) {

            goto fail;

        }

    }



    *VAR_4 = scsi_datain_unmarshall(VAR_7);

    if (*VAR_4 == NULL) {

        error_setg(VAR_5, "iSCSI: failed to unmarshall inquiry datain blob");

        goto fail;

    }



    return VAR_7;



fail:

    if (!error_is_set(VAR_5)) {

        error_setg(VAR_5, "iSCSI: Inquiry command failed : %s",

                   iscsi_get_error(VAR_0));

    }

    if (VAR_7 != NULL) {

        scsi_free_scsi_task(VAR_7);

    }

    return NULL;

}

static struct scsi_task *FUNC_0(struct iscsi_context *VAR_0, int VAR_1,
int VAR_2, int VAR_3, void **VAR_4, Error **VAR_5)
{ int VAR_6; struct scsi_task *VAR_7 = NULL; VAR_7 = iscsi_inquiry_sync(VAR_0, VAR_1, VAR_2, VAR_3, 64); if (VAR_7 == NULL || VAR_7->status != SCSI_STATUS_GOOD) { goto fail; } VAR_6 = scsi_datain_getfullsize(VAR_7); if (VAR_6 > VAR_7->datain.size) { scsi_free_scsi_task(VAR_7); VAR_7 = iscsi_inquiry_sync(VAR_0, VAR_1, VAR_2, VAR_3, VAR_6); if (VAR_7 == NULL || VAR_7->status != SCSI_STATUS_GOOD) { goto fail; } } *VAR_4 = scsi_datain_unmarshall(VAR_7); if (*VAR_4 == NULL) { error_setg(VAR_5, "iSCSI: failed to unmarshall inquiry datain blob"); goto fail; } return VAR_7; fail:
if (!error_is_set(VAR_5)) { error_setg(VAR_5, "iSCSI: Inquiry command failed : %s",
iscsi_get_error(VAR_0)); } if (VAR_7 != NULL) { scsi_free_scsi_task(VAR_7); } return NULL; }