virtio-blk: Avoid zeroing every request structure
commitde6c8042ec55da18702fa51f09072fcaa315edc3
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Fri, 14 May 2010 21:52:30 +0000 (14 22:52 +0100)
committerKevin Wolf <kwolf@redhat.com>
Fri, 21 May 2010 09:49:18 +0000 (21 11:49 +0200)
treea968fe7b04f590a3ad082f323b52f00b3d83e475
parentc53a7285b4377e91f30b7742c7e12c16d6bf86f0
virtio-blk: Avoid zeroing every request structure

The VirtIOBlockRequest structure is about 40 KB in size.  This patch
avoids zeroing every request by only initializing fields that are read.
The other fields are either written to or may not be used at all.

Oprofile shows about 10% of CPU samples in memset called by
virtio_blk_alloc_request().  The workload is
dd if=/dev/vda of=/dev/null iflag=direct bs=8k running concurrently 4
times.  This patch makes memset disappear to the bottom of the profile.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
hw/virtio-blk.c