diff options
-rw-r--r-- | src/drivers/block/scsi.c | 12 | ||||
-rw-r--r-- | src/include/gpxe/scsi.h | 2 | ||||
-rw-r--r-- | src/net/tcp/iscsi.c | 7 |
3 files changed, 15 insertions, 6 deletions
diff --git a/src/drivers/block/scsi.c b/src/drivers/block/scsi.c index fe6dcd8cb..19f99f82c 100644 --- a/src/drivers/block/scsi.c +++ b/src/drivers/block/scsi.c @@ -45,6 +45,18 @@ block_to_scsi ( struct block_device *blockdev ) { } /** + * Handle SCSI command with no backing device + * + * @v scsi SCSI device + * @v command SCSI command + * @ret rc Return status code + */ +int scsi_detached_command ( struct scsi_device *scsi __unused, + struct scsi_command *command __unused ) { + return -ENODEV; +} + +/** * Issue SCSI command * * @v scsi SCSI device diff --git a/src/include/gpxe/scsi.h b/src/include/gpxe/scsi.h index fbdde8dcb..b8866234a 100644 --- a/src/include/gpxe/scsi.h +++ b/src/include/gpxe/scsi.h @@ -270,6 +270,8 @@ struct scsi_device { struct refcnt *backend; }; +extern int scsi_detached_command ( struct scsi_device *scsi, + struct scsi_command *command ); extern int init_scsidev ( struct scsi_device *scsi ); #endif /* _GPXE_SCSI_H */ diff --git a/src/net/tcp/iscsi.c b/src/net/tcp/iscsi.c index 0f7b0de59..973718e00 100644 --- a/src/net/tcp/iscsi.c +++ b/src/net/tcp/iscsi.c @@ -1571,11 +1571,6 @@ static int iscsi_command ( struct scsi_device *scsi, return 0; } -static int iscsi_detached_command ( struct scsi_device *scsi __unused, - struct scsi_command *command __unused ) { - return -ENODEV; -} - /** * Shut down iSCSI interface * @@ -1588,7 +1583,7 @@ void iscsi_detach ( struct scsi_device *scsi ) { xfer_nullify ( &iscsi->socket ); iscsi_close_connection ( iscsi, 0 ); process_del ( &iscsi->process ); - scsi->command = iscsi_detached_command; + scsi->command = scsi_detached_command; ref_put ( scsi->backend ); scsi->backend = NULL; } |