Skip to content

Commit

Permalink
block: Add more types for tracked request
Browse files Browse the repository at this point in the history
We'll track more request types besides read and write, change the
boolean field to an enum.

Signed-off-by: Fam Zheng <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Message-id: [email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
  • Loading branch information
Fam Zheng authored and kevmw committed Nov 12, 2015
1 parent 17e50a7 commit ebde595
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
9 changes: 5 additions & 4 deletions block/io.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
10 changes: 9 additions & 1 deletion include/block/block_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit ebde595

Please sign in to comment.