};
/**
- * scsi_host_set_state - Take the given host through the host
- * state model.
+ * scsi_host_set_state - Take the given host through the host state model.
* @shost: scsi host to change the state of.
* @state: state to change to.
*
}
scsi_destroy_command_freelist(shost);
+ scsi_destroy_command_sense_buffer(shost);
if (shost->bqt)
blk_free_tags(shost->bqt);
shost->active_mode = sht->supported_mode;
shost->use_sg_chaining = sht->use_sg_chaining;
+ if (sht->supported_mode == MODE_UNKNOWN)
+ /* means we didn't set it ... default to INITIATOR */
+ shost->active_mode = MODE_INITIATOR;
+ else
+ shost->active_mode = sht->supported_mode;
+
if (sht->max_host_blocked)
shost->max_host_blocked = sht->max_host_blocked;
else
else
shost->dma_boundary = 0xffffffff;
- rval = scsi_setup_command_freelist(shost);
+ rval = scsi_setup_command_sense_buffer(shost);
if (rval)
goto fail_kfree;
+ rval = scsi_setup_command_freelist(shost);
+ if (rval)
+ goto fail_destroy_sense;
+
device_initialize(&shost->shost_gendev);
snprintf(shost->shost_gendev.bus_id, BUS_ID_SIZE, "host%d",
shost->host_no);
fail_destroy_freelist:
scsi_destroy_command_freelist(shost);
+ fail_destroy_sense:
+ scsi_destroy_command_sense_buffer(shost);
fail_kfree:
kfree(shost);
return NULL;
/**
* scsi_host_lookup - get a reference to a Scsi_Host by host no
- *
* @hostnum: host number to locate
*
* Return value: