mirror of
https://github.com/qemu/qemu.git
synced 2025-08-16 06:43:21 +00:00
virtio-scsi: move request-related items from .h to .c
There is no longer a need to expose the request and related APIs in virtio-scsi.h since there are no callers outside virtio-scsi.c. Note the block comment in VirtIOSCSIReq has been adjusted to meet the coding style. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 20220427143541.119567-7-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
ad482b57ef
commit
3dc584abee
@ -29,6 +29,43 @@
|
|||||||
#include "hw/virtio/virtio-access.h"
|
#include "hw/virtio/virtio-access.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|
||||||
|
typedef struct VirtIOSCSIReq {
|
||||||
|
/*
|
||||||
|
* Note:
|
||||||
|
* - fields up to resp_iov are initialized by virtio_scsi_init_req;
|
||||||
|
* - fields starting at vring are zeroed by virtio_scsi_init_req.
|
||||||
|
*/
|
||||||
|
VirtQueueElement elem;
|
||||||
|
|
||||||
|
VirtIOSCSI *dev;
|
||||||
|
VirtQueue *vq;
|
||||||
|
QEMUSGList qsgl;
|
||||||
|
QEMUIOVector resp_iov;
|
||||||
|
|
||||||
|
union {
|
||||||
|
/* Used for two-stage request submission */
|
||||||
|
QTAILQ_ENTRY(VirtIOSCSIReq) next;
|
||||||
|
|
||||||
|
/* Used for cancellation of request during TMFs */
|
||||||
|
int remaining;
|
||||||
|
};
|
||||||
|
|
||||||
|
SCSIRequest *sreq;
|
||||||
|
size_t resp_size;
|
||||||
|
enum SCSIXferMode mode;
|
||||||
|
union {
|
||||||
|
VirtIOSCSICmdResp cmd;
|
||||||
|
VirtIOSCSICtrlTMFResp tmf;
|
||||||
|
VirtIOSCSICtrlANResp an;
|
||||||
|
VirtIOSCSIEvent event;
|
||||||
|
} resp;
|
||||||
|
union {
|
||||||
|
VirtIOSCSICmdReq cmd;
|
||||||
|
VirtIOSCSICtrlTMFReq tmf;
|
||||||
|
VirtIOSCSICtrlANReq an;
|
||||||
|
} req;
|
||||||
|
} VirtIOSCSIReq;
|
||||||
|
|
||||||
static inline int virtio_scsi_get_lun(uint8_t *lun)
|
static inline int virtio_scsi_get_lun(uint8_t *lun)
|
||||||
{
|
{
|
||||||
return ((lun[2] << 8) | lun[3]) & 0x3FFF;
|
return ((lun[2] << 8) | lun[3]) & 0x3FFF;
|
||||||
@ -45,7 +82,7 @@ static inline SCSIDevice *virtio_scsi_device_get(VirtIOSCSI *s, uint8_t *lun)
|
|||||||
return scsi_device_get(&s->bus, 0, lun[1], virtio_scsi_get_lun(lun));
|
return scsi_device_get(&s->bus, 0, lun[1], virtio_scsi_get_lun(lun));
|
||||||
}
|
}
|
||||||
|
|
||||||
void virtio_scsi_init_req(VirtIOSCSI *s, VirtQueue *vq, VirtIOSCSIReq *req)
|
static void virtio_scsi_init_req(VirtIOSCSI *s, VirtQueue *vq, VirtIOSCSIReq *req)
|
||||||
{
|
{
|
||||||
VirtIODevice *vdev = VIRTIO_DEVICE(s);
|
VirtIODevice *vdev = VIRTIO_DEVICE(s);
|
||||||
const size_t zero_skip =
|
const size_t zero_skip =
|
||||||
@ -58,7 +95,7 @@ void virtio_scsi_init_req(VirtIOSCSI *s, VirtQueue *vq, VirtIOSCSIReq *req)
|
|||||||
memset((uint8_t *)req + zero_skip, 0, sizeof(*req) - zero_skip);
|
memset((uint8_t *)req + zero_skip, 0, sizeof(*req) - zero_skip);
|
||||||
}
|
}
|
||||||
|
|
||||||
void virtio_scsi_free_req(VirtIOSCSIReq *req)
|
static void virtio_scsi_free_req(VirtIOSCSIReq *req)
|
||||||
{
|
{
|
||||||
qemu_iovec_destroy(&req->resp_iov);
|
qemu_iovec_destroy(&req->resp_iov);
|
||||||
qemu_sglist_destroy(&req->qsgl);
|
qemu_sglist_destroy(&req->qsgl);
|
||||||
@ -801,8 +838,8 @@ static void virtio_scsi_reset(VirtIODevice *vdev)
|
|||||||
s->events_dropped = false;
|
s->events_dropped = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev,
|
static void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev,
|
||||||
uint32_t event, uint32_t reason)
|
uint32_t event, uint32_t reason)
|
||||||
{
|
{
|
||||||
VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s);
|
VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s);
|
||||||
VirtIOSCSIReq *req;
|
VirtIOSCSIReq *req;
|
||||||
|
@ -92,42 +92,6 @@ struct VirtIOSCSI {
|
|||||||
uint32_t host_features;
|
uint32_t host_features;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct VirtIOSCSIReq {
|
|
||||||
/* Note:
|
|
||||||
* - fields up to resp_iov are initialized by virtio_scsi_init_req;
|
|
||||||
* - fields starting at vring are zeroed by virtio_scsi_init_req.
|
|
||||||
* */
|
|
||||||
VirtQueueElement elem;
|
|
||||||
|
|
||||||
VirtIOSCSI *dev;
|
|
||||||
VirtQueue *vq;
|
|
||||||
QEMUSGList qsgl;
|
|
||||||
QEMUIOVector resp_iov;
|
|
||||||
|
|
||||||
union {
|
|
||||||
/* Used for two-stage request submission */
|
|
||||||
QTAILQ_ENTRY(VirtIOSCSIReq) next;
|
|
||||||
|
|
||||||
/* Used for cancellation of request during TMFs */
|
|
||||||
int remaining;
|
|
||||||
};
|
|
||||||
|
|
||||||
SCSIRequest *sreq;
|
|
||||||
size_t resp_size;
|
|
||||||
enum SCSIXferMode mode;
|
|
||||||
union {
|
|
||||||
VirtIOSCSICmdResp cmd;
|
|
||||||
VirtIOSCSICtrlTMFResp tmf;
|
|
||||||
VirtIOSCSICtrlANResp an;
|
|
||||||
VirtIOSCSIEvent event;
|
|
||||||
} resp;
|
|
||||||
union {
|
|
||||||
VirtIOSCSICmdReq cmd;
|
|
||||||
VirtIOSCSICtrlTMFReq tmf;
|
|
||||||
VirtIOSCSICtrlANReq an;
|
|
||||||
} req;
|
|
||||||
} VirtIOSCSIReq;
|
|
||||||
|
|
||||||
static inline void virtio_scsi_acquire(VirtIOSCSI *s)
|
static inline void virtio_scsi_acquire(VirtIOSCSI *s)
|
||||||
{
|
{
|
||||||
if (s->ctx) {
|
if (s->ctx) {
|
||||||
@ -149,10 +113,6 @@ void virtio_scsi_common_realize(DeviceState *dev,
|
|||||||
Error **errp);
|
Error **errp);
|
||||||
|
|
||||||
void virtio_scsi_common_unrealize(DeviceState *dev);
|
void virtio_scsi_common_unrealize(DeviceState *dev);
|
||||||
void virtio_scsi_init_req(VirtIOSCSI *s, VirtQueue *vq, VirtIOSCSIReq *req);
|
|
||||||
void virtio_scsi_free_req(VirtIOSCSIReq *req);
|
|
||||||
void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev,
|
|
||||||
uint32_t event, uint32_t reason);
|
|
||||||
|
|
||||||
void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error **errp);
|
void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error **errp);
|
||||||
int virtio_scsi_dataplane_start(VirtIODevice *s);
|
int virtio_scsi_dataplane_start(VirtIODevice *s);
|
||||||
|
Loading…
Reference in New Issue
Block a user