[SCSI] virtio-scsi: release sg_lock after add_buf
commitbce750b1633927be3eecf821f4d17975c3ba5b6a
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 13 Jun 2012 14:56:33 +0000 (13 16:56 +0200)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 20 Jul 2012 07:58:57 +0000 (20 08:58 +0100)
treec2c02f7bb37c67e1f4e769b4eb064726e84fc0ac
parent139fe45abc2234b20fd5ecbcb7ea6d3688fed5e5
[SCSI] virtio-scsi: release sg_lock after add_buf

We do not need the sglist after calling virtqueue_add_buf.  Hence we
can "pipeline" the locked operations and start preparing the sglist
for the next request while we kick the virtqueue.

Together with the previous two patches, this improves performance as
follows.  For a simple "if=/dev/sda of=/dev/null bs=128M iflag=direct"
(the source being a 10G disk, residing entirely in the host buffer cache),
the additional locking does not cause any penalty with only one dd
process, but 2 simultaneous I/O operations improve their times by 3%:

               number of simultaneous dd
                   1               2
 ----------------------------------------
 current        5.9958s        10.2640s
 patched        5.9531s         9.8663s

(Times are best of 10).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/virtio_scsi.c