block: add request tracking
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Thu, 17 Nov 2011 13:40:27 +0000 (13:40 +0000)
committerKevin Wolf <kwolf@redhat.com>
Mon, 5 Dec 2011 13:51:38 +0000 (14:51 +0100)
commitdbffbdcfff69431b622866ac5ea78df74fdc02d4
treeec4b73f7c58efde89080cf37588ed9ce56fe3b55
parente8ee5e4c476d5b0654d8f1271a2b7c065acc486e
block: add request tracking

The block layer does not know about pending requests.  This information
is necessary for copy-on-read since overlapping requests must be
serialized to prevent races that corrupt the image.

The BlockDriverState gets a new tracked_request list field which
contains all pending requests.  Each request is a BdrvTrackedRequest
record with sector_num, nb_sectors, and is_write fields.

Note that request tracking is always enabled but hopefully this extra
work is so small that it doesn't justify adding an enable/disable flag.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block.c
block_int.h