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 ) );
}
/**
* @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 );
}