• Paolo Bonzini's avatar
    [SCSI] virtio-scsi: release sg_lock after add_buf · bce750b1
    Paolo Bonzini authored
    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: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    bce750b1
virtio_scsi.c 15 KB