tcm_vhost: Convert I/O path to use target_submit_cmd_map_sgls
This patch converts tcm_vhost to use target_submit_cmd_map_sgls() for I/O submission and mapping of pre-allocated SGL memory from incoming virtio-scsi SGL memory -> se_cmd descriptors. This includes removing the original open-coded fabric uses of target core callers to support transport_generic_map_mem_to_cmd() between target_setup_cmd_from_cdb() and transport_handle_cdb_direct() logic. It also includes adding a handful of new tcm_vhost_cmnd member + assignments in vhost_scsi_allocate_cmd() used from cmwq process context I/O submission within tcm_vhost_submission_work() (v2: Use renamed target_submit_cmd_map_sgls) Reported-by: Christoph Hellwig <hch@lst.de> Cc: Christoph Hellwig <hch@lst.de> Acked-by: Michael S. Tsirkin <mst@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Stefan Hajnoczi <stefanha@gmail.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
@@ -5,6 +5,12 @@
|
||||
struct tcm_vhost_cmd {
|
||||
/* Descriptor from vhost_get_vq_desc() for virt_queue segment */
|
||||
int tvc_vq_desc;
|
||||
/* virtio-scsi initiator task attribute */
|
||||
int tvc_task_attr;
|
||||
/* virtio-scsi initiator data direction */
|
||||
enum dma_data_direction tvc_data_direction;
|
||||
/* Expected data transfer length from virtio-scsi header */
|
||||
u32 tvc_exp_data_len;
|
||||
/* The Tag from include/linux/virtio_scsi.h:struct virtio_scsi_cmd_req */
|
||||
u64 tvc_tag;
|
||||
/* The number of scatterlists associated with this cmd */
|
||||
@@ -17,6 +23,8 @@ struct tcm_vhost_cmd {
|
||||
struct virtio_scsi_cmd_resp __user *tvc_resp;
|
||||
/* Pointer to vhost_scsi for our device */
|
||||
struct vhost_scsi *tvc_vhost;
|
||||
/* Pointer to vhost nexus memory */
|
||||
struct tcm_vhost_nexus *tvc_nexus;
|
||||
/* The TCM I/O descriptor that is accessed via container_of() */
|
||||
struct se_cmd tvc_se_cmd;
|
||||
/* work item used for cmwq dispatch to tcm_vhost_submission_work() */
|
||||
|
Reference in New Issue
Block a user