From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52388) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uhedy-0001Xr-DP for qemu-devel@nongnu.org; Wed, 29 May 2013 07:34:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uhedx-0001OA-5y for qemu-devel@nongnu.org; Wed, 29 May 2013 07:34:14 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50773) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uhedw-0001O0-Uk for qemu-devel@nongnu.org; Wed, 29 May 2013 07:34:13 -0400 From: Kevin Wolf Date: Wed, 29 May 2013 13:34:04 +0200 Message-Id: <1369827246-2802-2-git-send-email-kwolf@redhat.com> In-Reply-To: <1369827246-2802-1-git-send-email-kwolf@redhat.com> References: <1369827246-2802-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 1/3] blkdebug: Add BLKDBG_FLUSH_TO_OS/DISK events List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, afaerber@suse.de, stefanha@redhat.com Signed-off-by: Kevin Wolf --- block.c | 8 ++++---- block/blkdebug.c | 3 +++ include/block/block.h | 3 +++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/block.c b/block.c index 3f87489..52a2101 100644 --- a/block.c +++ b/block.c @@ -3307,13 +3307,11 @@ int bdrv_load_vmstate(BlockDriverState *bs, uint8_t *buf, void bdrv_debug_event(BlockDriverState *bs, BlkDebugEvent event) { - BlockDriver *drv = bs->drv; - - if (!drv || !drv->bdrv_debug_event) { + if (!bs || !bs->drv || !bs->drv->bdrv_debug_event) { return; } - drv->bdrv_debug_event(bs, event); + bs->drv->bdrv_debug_event(bs, event); } int bdrv_debug_breakpoint(BlockDriverState *bs, const char *event, @@ -4326,6 +4324,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs) } /* 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) { ret = bs->drv->bdrv_co_flush_to_os(bs); if (ret < 0) { @@ -4338,6 +4337,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs) goto flush_parent; } + BLKDBG_EVENT(bs->file, BLKDBG_FLUSH_TO_DISK); if (bs->drv->bdrv_co_flush_to_disk) { ret = bs->drv->bdrv_co_flush_to_disk(bs); } else if (bs->drv->bdrv_aio_flush) { diff --git a/block/blkdebug.c b/block/blkdebug.c index 71f99e4..ccb627a 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -182,6 +182,9 @@ static const char *event_names[BLKDBG_EVENT_MAX] = { [BLKDBG_CLUSTER_ALLOC] = "cluster_alloc", [BLKDBG_CLUSTER_ALLOC_BYTES] = "cluster_alloc_bytes", [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) diff --git a/include/block/block.h b/include/block/block.h index 1251c5c..ce350c7 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -449,6 +449,9 @@ typedef enum { BLKDBG_CLUSTER_ALLOC_BYTES, BLKDBG_CLUSTER_FREE, + BLKDBG_FLUSH_TO_OS, + BLKDBG_FLUSH_TO_DISK, + BLKDBG_EVENT_MAX, } BlkDebugEvent; -- 1.8.1.4