Optimize bounce buffer handling for the "write" case.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
struct scsi_sense_hdr sense_hdr;
struct vmscsi_request *vm_srb;
struct scsi_sense_hdr sense_hdr;
struct vmscsi_request *vm_srb;
+ vm_srb = &request->vstor_packet.vm_srb;
if (cmd_request->bounce_sgl_count) {
if (cmd_request->bounce_sgl_count) {
-
- /* FIXME: We can optimize on writes by just skipping this */
- copy_from_bounce_buffer(scsi_sglist(scmnd),
+ if (vm_srb->data_in == READ_TYPE) {
+ copy_from_bounce_buffer(scsi_sglist(scmnd),
cmd_request->bounce_sgl,
scsi_sg_count(scmnd));
cmd_request->bounce_sgl,
scsi_sg_count(scmnd));
- destroy_bounce_buffer(cmd_request->bounce_sgl,
- cmd_request->bounce_sgl_count);
+ destroy_bounce_buffer(cmd_request->bounce_sgl,
+ cmd_request->bounce_sgl_count);
+ }
- vm_srb = &request->vstor_packet.vm_srb;
scmnd->result = vm_srb->scsi_status;
if (scmnd->result) {
scmnd->result = vm_srb->scsi_status;
if (scmnd->result) {