From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:33535) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qm4QI-0007jY-39 for qemu-devel@nongnu.org; Wed, 27 Jul 2011 09:45:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qm4QB-0004b7-Ls for qemu-devel@nongnu.org; Wed, 27 Jul 2011 09:45:17 -0400 Received: from mtagate7.uk.ibm.com ([194.196.100.167]:39426) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qm4QB-0004ar-37 for qemu-devel@nongnu.org; Wed, 27 Jul 2011 09:45:11 -0400 Received: from d06nrmr1806.portsmouth.uk.ibm.com (d06nrmr1806.portsmouth.uk.ibm.com [9.149.39.193]) by mtagate7.uk.ibm.com (8.13.1/8.13.1) with ESMTP id p6RDjAGp008689 for ; Wed, 27 Jul 2011 13:45:10 GMT Received: from d06av09.portsmouth.uk.ibm.com (d06av09.portsmouth.uk.ibm.com [9.149.37.250]) by d06nrmr1806.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p6RDj9E72617446 for ; Wed, 27 Jul 2011 14:45:09 +0100 Received: from d06av09.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av09.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p6RDj92j016412 for ; Wed, 27 Jul 2011 07:45:09 -0600 From: Stefan Hajnoczi Date: Wed, 27 Jul 2011 14:44:54 +0100 Message-Id: <1311774295-8696-15-git-send-email-stefanha@linux.vnet.ibm.com> In-Reply-To: <1311774295-8696-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1311774295-8696-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 14/15] trace: trace bdrv_aio_readv/writev error paths List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Anthony Liguori , Stefan Hajnoczi , Adam Litke It is useful to understand why an I/O request was failed. Add trace events for the error paths in bdrv_aio_readv() and bdrv_aio_writev(). Signed-off-by: Stefan Hajnoczi --- block.c | 24 +++++++++++++++++++----- trace-events | 7 +++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/block.c b/block.c index 8225758..6cd7742 100644 --- a/block.c +++ b/block.c @@ -2148,10 +2148,14 @@ BlockDriverAIOCB *bdrv_aio_readv(BlockDriverState *bs, int64_t sector_num, trace_bdrv_aio_readv(bs, sector_num, nb_sectors, opaque); - if (!drv) + if (!drv) { + trace_bdrv_aio_readv_null_drv(bs, sector_num, nb_sectors, opaque); return NULL; - if (bdrv_check_request(bs, sector_num, nb_sectors)) + } + if (bdrv_check_request(bs, sector_num, nb_sectors)) { + trace_bdrv_aio_readv_out_of_range(bs, sector_num, nb_sectors, opaque); return NULL; + } ret = drv->bdrv_aio_readv(bs, sector_num, qiov, nb_sectors, cb, opaque); @@ -2160,6 +2164,8 @@ BlockDriverAIOCB *bdrv_aio_readv(BlockDriverState *bs, int64_t sector_num, /* Update stats even though technically transfer has not happened. */ bs->rd_bytes += (unsigned) nb_sectors * BDRV_SECTOR_SIZE; bs->rd_ops ++; + } else { + trace_bdrv_aio_readv_failed(bs, sector_num, nb_sectors, opaque); } return ret; @@ -2211,12 +2217,18 @@ BlockDriverAIOCB *bdrv_aio_writev(BlockDriverState *bs, int64_t sector_num, trace_bdrv_aio_writev(bs, sector_num, nb_sectors, opaque); - if (!drv) + if (!drv) { + trace_bdrv_aio_writev_null_drv(bs, sector_num, nb_sectors, opaque); return NULL; - if (bs->read_only) + } + if (bs->read_only) { + trace_bdrv_aio_writev_read_only(bs, sector_num, nb_sectors, opaque); return NULL; - if (bdrv_check_request(bs, sector_num, nb_sectors)) + } + if (bdrv_check_request(bs, sector_num, nb_sectors)) { + trace_bdrv_aio_writev_out_of_range(bs, sector_num, nb_sectors, opaque); return NULL; + } if (bs->dirty_bitmap) { blk_cb_data = blk_dirty_cb_alloc(bs, sector_num, nb_sectors, cb, @@ -2235,6 +2247,8 @@ BlockDriverAIOCB *bdrv_aio_writev(BlockDriverState *bs, int64_t sector_num, if (bs->wr_highest_sector < sector_num + nb_sectors - 1) { bs->wr_highest_sector = sector_num + nb_sectors - 1; } + } else { + trace_bdrv_aio_writev_failed(bs, sector_num, nb_sectors, opaque); } return ret; diff --git a/trace-events b/trace-events index 2c7c6dc..3a8b2d0 100644 --- a/trace-events +++ b/trace-events @@ -64,7 +64,14 @@ disable bdrv_aio_multiwrite_earlyfail(void *mcb) "mcb %p" disable bdrv_aio_multiwrite_latefail(void *mcb, int i) "mcb %p i %d" disable bdrv_aio_flush(void *bs, void *opaque) "bs %p opaque %p" disable bdrv_aio_readv(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" +disable bdrv_aio_readv_null_drv(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" +disable bdrv_aio_readv_out_of_range(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" +disable bdrv_aio_readv_failed(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" disable bdrv_aio_writev(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" +disable bdrv_aio_writev_null_drv(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" +disable bdrv_aio_writev_read_only(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" +disable bdrv_aio_writev_out_of_range(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" +disable bdrv_aio_writev_failed(void *bs, int64_t sector_num, int nb_sectors, void *opaque) "bs %p sector_num %"PRId64" nb_sectors %d opaque %p" disable bdrv_set_locked(void *bs, int locked) "bs %p locked %d" # hw/virtio-blk.c -- 1.7.5.4