mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
scsi: make io_timeout configurable
The current code sets an infinite timeout on SG_IO requests, causing the guest to stall if the host experiences a frame loss. This patch adds an 'io_timeout' parameter for SCSIDevice to make the SG_IO timeout configurable, and also shortens the default timeout to 30 seconds to avoid infinite stalls. Signed-off-by: Hannes Reinecke <hare@suse.de> Message-Id: <20201116183114.55703-3-hare@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
106ad1f9c5
commit
c9b6609b69
3 changed files with 18 additions and 9 deletions
|
@ -18,6 +18,7 @@ typedef struct SCSIReqOps SCSIReqOps;
|
|||
|
||||
#define SCSI_SENSE_BUF_SIZE_OLD 96
|
||||
#define SCSI_SENSE_BUF_SIZE 252
|
||||
#define DEFAULT_IO_TIMEOUT 30
|
||||
|
||||
struct SCSIRequest {
|
||||
SCSIBus *bus;
|
||||
|
@ -84,6 +85,7 @@ struct SCSIDevice
|
|||
uint64_t port_wwn;
|
||||
int scsi_version;
|
||||
int default_scsi_version;
|
||||
uint32_t io_timeout;
|
||||
bool needs_vpd_bl_emulation;
|
||||
bool hba_supports_iothread;
|
||||
};
|
||||
|
@ -188,7 +190,7 @@ void scsi_device_unit_attention_reported(SCSIDevice *dev);
|
|||
void scsi_generic_read_device_inquiry(SCSIDevice *dev);
|
||||
int scsi_device_get_sense(SCSIDevice *dev, uint8_t *buf, int len, bool fixed);
|
||||
int scsi_SG_IO_FROM_DEV(BlockBackend *blk, uint8_t *cmd, uint8_t cmd_size,
|
||||
uint8_t *buf, uint8_t buf_size);
|
||||
uint8_t *buf, uint8_t buf_size, uint32_t timeout);
|
||||
SCSIDevice *scsi_device_find(SCSIBus *bus, int channel, int target, int lun);
|
||||
SCSIDevice *scsi_device_get(SCSIBus *bus, int channel, int target, int lun);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue