Merge changes from mcb-tcp-fixes branch.
[people/xl0/gpxe.git] / src / drivers / scsi / iscsidev.c
index 17ad376..b92d4bc 100644 (file)
@@ -37,7 +37,7 @@ static int iscsi_command ( struct scsi_device *scsi,
        struct iscsi_device *iscsidev
                = container_of ( scsi, struct iscsi_device, scsi );
 
-       return iscsi_issue ( &iscsidev->iscsi, command );
+       return async_wait ( iscsi_issue ( &iscsidev->iscsi, command ) );
 }
 
 /**
@@ -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 ) {
+       iscsi_shutdown ( &iscsidev->iscsi );
 }