summaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
authorMichael Brown2006-12-21 18:17:47 +0100
committerMichael Brown2006-12-21 18:17:47 +0100
commitab242a760d66064ff14b83daaa2eef0a895c8d2b (patch)
treecbf40f86cc848448bb366db05da55bb6595e6811 /src/drivers
parentDefault to port 0 (sic). (diff)
downloadipxe-ab242a760d66064ff14b83daaa2eef0a895c8d2b.tar.gz
ipxe-ab242a760d66064ff14b83daaa2eef0a895c8d2b.tar.xz
ipxe-ab242a760d66064ff14b83daaa2eef0a895c8d2b.zip
Add ability to shut down iSCSI connection
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/scsi/iscsidev.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/drivers/scsi/iscsidev.c b/src/drivers/scsi/iscsidev.c
index 8f1b2435d..9ee625c4a 100644
--- a/src/drivers/scsi/iscsidev.c
+++ b/src/drivers/scsi/iscsidev.c
@@ -46,7 +46,22 @@ static int iscsi_command ( struct scsi_device *scsi,
* @v iscsidev iSCSI device
*/
int init_iscsidev ( struct iscsi_device *iscsidev ) {
+ int rc;
+
iscsidev->scsi.command = iscsi_command;
iscsidev->scsi.lun = iscsidev->iscsi.lun;
- return init_scsidev ( &iscsidev->scsi );
+ rc = init_scsidev ( &iscsidev->scsi );
+ if ( rc != 0 ) {
+ fini_iscsidev ( iscsidev );
+ }
+ return rc;
+}
+
+/**
+ * Shut down iSCSI device
+ *
+ * @v iscsidev iSCSI device
+ */
+void fini_iscsidev ( struct iscsi_device *iscsidev ) {
+ async_wait ( iscsi_shutdown ( &iscsidev->iscsi ) );
}