vhost/scsi: Add ANY_LAYOUT support in vhost_scsi_handle_vq
authorNicholas Bellinger <nab@linux-iscsi.org>
Mon, 26 Jan 2015 05:14:58 +0000 (21:14 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 4 Feb 2015 18:55:37 +0000 (10:55 -0800)
commit09b13fa8c1a1093e9458549ac8bb203a7c65c62a
treecd107aeab2fb6b1e6e1debc868ef8773bb777710
parente8de56b5e76ab7ed2a4aa3476649fe3fa85de1d7
vhost/scsi: Add ANY_LAYOUT support in vhost_scsi_handle_vq

This patch adds ANY_LAYOUT compatible support within the existing
vhost_scsi_handle_vq() ->handle_kick() callback.

It calculates data_direction + exp_data_len for the new tcm_vhost_cmd
descriptor by walking both outgoing + incoming iovecs using iov_iter,
assuming the layout of outgoing request header + T10_PI + Data payload
comes first.

It also uses copy_from_iter() to copy leading virtio-scsi request header
that may or may not include SCSI CDB, that returns a re-calculated iovec
to start of T10_PI or Data SGL memory.

Also, go ahead and drop the legacy pre virtio v1.0 !ANY_LAYOUT logic.

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/vhost/scsi.c