qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH V19 6/8] add debug event for add-cow


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH V19 6/8] add debug event for add-cow
Date: Wed, 5 Jun 2013 15:46:43 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 30.05.2013 um 12:00 hat Dongxu Wang geschrieben:
> From: Dong Xu Wang <address@hidden>
> 
> Signed-off-by: Dong Xu Wang <address@hidden>
> Signed-off-by: Dongxu Wang <address@hidden>

One of these should surely be enough?

> ---
>  block/blkdebug.c      | 3 +++
>  block/block-cache.c   | 4 ++--
>  include/block/block.h | 3 +++
>  3 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/block/blkdebug.c b/block/blkdebug.c
> index 71f99e4..2bd6a53 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_ADDCOW_READ]                    = "add_cow_read",
> +    [BLKDBG_ADDCOW_WRITE]                   = "add_cow_write",
>  };
>  
>  static int get_event_by_name(const char *name, BlkDebugEvent *event)
> diff --git a/block/block-cache.c b/block/block-cache.c
> index f5d75d1..454269c 100644
> --- a/block/block-cache.c
> +++ b/block/block-cache.c
> @@ -125,7 +125,7 @@ static int block_cache_entry_flush(BlockDriverState *bs, 
> BlockCache *c, int i)
>      } else if (c->table_type == BLOCK_TABLE_L2) {
>          BLKDBG_EVENT(bs->file, BLKDBG_L2_UPDATE);
>      } else if (c->table_type == BLOCK_TABLE_BITMAP) {
> -        BLKDBG_EVENT(bs->file, BLKDBG_COW_WRITE);
> +        BLKDBG_EVENT(bs->file, BLKDBG_ADDCOW_WRITE);
>      }
>  
>      ret = bdrv_pwrite(bs->file, c->entries[i].offset,
> @@ -260,7 +260,7 @@ static int block_cache_do_get(BlockDriverState *bs, 
> BlockCache *c,
>          if (c->table_type == BLOCK_TABLE_L2) {
>              BLKDBG_EVENT(bs->file, BLKDBG_L2_LOAD);
>          } else if (c->table_type == BLOCK_TABLE_BITMAP) {
> -            BLKDBG_EVENT(bs->file, BLKDBG_COW_READ);
> +            BLKDBG_EVENT(bs->file, BLKDBG_ADDCOW_READ);
>          }

Doesn't this break qcow2 test cases that don't get the
BLKDBG_COW_READ/WRITE events any more now?

I guess you need to extend the cache creation function to also take
function pointers for the blkdebug events that should be generated in
the various places. Maybe it's enough data now that it would be worth
having a BlockCache struct somewhere (e.g. embedded in BDRVQcow2State)
and change the cache creation function to an init function that only
takes a pointer to this struct.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]