mirror of https://gitee.com/openkylin/qemu.git
block: Add more types for tracked request
We'll track more request types besides read and write, change the boolean field to an enum. Signed-off-by: Fam Zheng <famz@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-id: 1447064214-29930-2-git-send-email-famz@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
17e50a72a3
commit
ebde595ce6
|
@ -348,13 +348,14 @@ static void tracked_request_end(BdrvTrackedRequest *req)
|
|||
static void tracked_request_begin(BdrvTrackedRequest *req,
|
||||
BlockDriverState *bs,
|
||||
int64_t offset,
|
||||
unsigned int bytes, bool is_write)
|
||||
unsigned int bytes,
|
||||
enum BdrvTrackedRequestType type)
|
||||
{
|
||||
*req = (BdrvTrackedRequest){
|
||||
.bs = bs,
|
||||
.offset = offset,
|
||||
.bytes = bytes,
|
||||
.is_write = is_write,
|
||||
.type = type,
|
||||
.co = qemu_coroutine_self(),
|
||||
.serialising = false,
|
||||
.overlap_offset = offset,
|
||||
|
@ -971,7 +972,7 @@ static int coroutine_fn bdrv_co_do_preadv(BlockDriverState *bs,
|
|||
bytes = ROUND_UP(bytes, align);
|
||||
}
|
||||
|
||||
tracked_request_begin(&req, bs, offset, bytes, false);
|
||||
tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_READ);
|
||||
ret = bdrv_aligned_preadv(bs, &req, offset, bytes, align,
|
||||
use_local_qiov ? &local_qiov : qiov,
|
||||
flags);
|
||||
|
@ -1292,7 +1293,7 @@ static int coroutine_fn bdrv_co_do_pwritev(BlockDriverState *bs,
|
|||
* Pad qiov with the read parts and be sure to have a tracked request not
|
||||
* only for bdrv_aligned_pwritev, but also for the reads of the RMW cycle.
|
||||
*/
|
||||
tracked_request_begin(&req, bs, offset, bytes, true);
|
||||
tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_WRITE);
|
||||
|
||||
if (!qiov) {
|
||||
ret = bdrv_co_do_zero_pwritev(bs, offset, bytes, flags, &req);
|
||||
|
|
|
@ -60,11 +60,19 @@
|
|||
|
||||
#define BLOCK_PROBE_BUF_SIZE 512
|
||||
|
||||
enum BdrvTrackedRequestType {
|
||||
BDRV_TRACKED_READ,
|
||||
BDRV_TRACKED_WRITE,
|
||||
BDRV_TRACKED_FLUSH,
|
||||
BDRV_TRACKED_IOCTL,
|
||||
BDRV_TRACKED_DISCARD,
|
||||
};
|
||||
|
||||
typedef struct BdrvTrackedRequest {
|
||||
BlockDriverState *bs;
|
||||
int64_t offset;
|
||||
unsigned int bytes;
|
||||
bool is_write;
|
||||
enum BdrvTrackedRequestType type;
|
||||
|
||||
bool serialising;
|
||||
int64_t overlap_offset;
|
||||
|
|
Loading…
Reference in New Issue