blkdebug: Add BLKDBG_FLUSH_TO_OS/DISK events
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
587da2c39c
commit
bf736fe34c
8
block.c
8
block.c
@ -3186,13 +3186,11 @@ int bdrv_load_vmstate(BlockDriverState *bs, uint8_t *buf,
|
|||||||
|
|
||||||
void bdrv_debug_event(BlockDriverState *bs, BlkDebugEvent event)
|
void bdrv_debug_event(BlockDriverState *bs, BlkDebugEvent event)
|
||||||
{
|
{
|
||||||
BlockDriver *drv = bs->drv;
|
if (!bs || !bs->drv || !bs->drv->bdrv_debug_event) {
|
||||||
|
|
||||||
if (!drv || !drv->bdrv_debug_event) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
drv->bdrv_debug_event(bs, event);
|
bs->drv->bdrv_debug_event(bs, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bdrv_debug_breakpoint(BlockDriverState *bs, const char *event,
|
int bdrv_debug_breakpoint(BlockDriverState *bs, const char *event,
|
||||||
@ -4024,6 +4022,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Write back cached data to the OS even with cache=unsafe */
|
/* Write back cached data to the OS even with cache=unsafe */
|
||||||
|
BLKDBG_EVENT(bs->file, BLKDBG_FLUSH_TO_OS);
|
||||||
if (bs->drv->bdrv_co_flush_to_os) {
|
if (bs->drv->bdrv_co_flush_to_os) {
|
||||||
ret = bs->drv->bdrv_co_flush_to_os(bs);
|
ret = bs->drv->bdrv_co_flush_to_os(bs);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@ -4036,6 +4035,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs)
|
|||||||
goto flush_parent;
|
goto flush_parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BLKDBG_EVENT(bs->file, BLKDBG_FLUSH_TO_DISK);
|
||||||
if (bs->drv->bdrv_co_flush_to_disk) {
|
if (bs->drv->bdrv_co_flush_to_disk) {
|
||||||
ret = bs->drv->bdrv_co_flush_to_disk(bs);
|
ret = bs->drv->bdrv_co_flush_to_disk(bs);
|
||||||
} else if (bs->drv->bdrv_aio_flush) {
|
} else if (bs->drv->bdrv_aio_flush) {
|
||||||
|
@ -182,6 +182,9 @@ static const char *event_names[BLKDBG_EVENT_MAX] = {
|
|||||||
[BLKDBG_CLUSTER_ALLOC] = "cluster_alloc",
|
[BLKDBG_CLUSTER_ALLOC] = "cluster_alloc",
|
||||||
[BLKDBG_CLUSTER_ALLOC_BYTES] = "cluster_alloc_bytes",
|
[BLKDBG_CLUSTER_ALLOC_BYTES] = "cluster_alloc_bytes",
|
||||||
[BLKDBG_CLUSTER_FREE] = "cluster_free",
|
[BLKDBG_CLUSTER_FREE] = "cluster_free",
|
||||||
|
|
||||||
|
[BLKDBG_FLUSH_TO_OS] = "flush_to_os",
|
||||||
|
[BLKDBG_FLUSH_TO_DISK] = "flush_to_disk",
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_event_by_name(const char *name, BlkDebugEvent *event)
|
static int get_event_by_name(const char *name, BlkDebugEvent *event)
|
||||||
|
@ -424,6 +424,9 @@ typedef enum {
|
|||||||
BLKDBG_CLUSTER_ALLOC_BYTES,
|
BLKDBG_CLUSTER_ALLOC_BYTES,
|
||||||
BLKDBG_CLUSTER_FREE,
|
BLKDBG_CLUSTER_FREE,
|
||||||
|
|
||||||
|
BLKDBG_FLUSH_TO_OS,
|
||||||
|
BLKDBG_FLUSH_TO_DISK,
|
||||||
|
|
||||||
BLKDBG_EVENT_MAX,
|
BLKDBG_EVENT_MAX,
|
||||||
} BlkDebugEvent;
|
} BlkDebugEvent;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user