From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:38356) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWYCV-0005xk-Jl for qemu-devel@nongnu.org; Tue, 14 Jun 2011 14:18:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWYCT-0006AP-Bp for qemu-devel@nongnu.org; Tue, 14 Jun 2011 14:18:55 -0400 Received: from mtagate2.uk.ibm.com ([194.196.100.162]:37343) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWYCS-00069S-Dr for qemu-devel@nongnu.org; Tue, 14 Jun 2011 14:18:52 -0400 Received: from d06nrmr1707.portsmouth.uk.ibm.com (d06nrmr1707.portsmouth.uk.ibm.com [9.149.39.225]) by mtagate2.uk.ibm.com (8.13.1/8.13.1) with ESMTP id p5EIIojY028983 for ; Tue, 14 Jun 2011 18:18:50 GMT Received: from d06av12.portsmouth.uk.ibm.com (d06av12.portsmouth.uk.ibm.com [9.149.37.247]) by d06nrmr1707.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p5EIIofa2052230 for ; Tue, 14 Jun 2011 19:18:50 +0100 Received: from d06av12.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av12.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p5EIIoBa015296 for ; Tue, 14 Jun 2011 12:18:50 -0600 From: Stefan Hajnoczi Date: Tue, 14 Jun 2011 19:18:31 +0100 Message-Id: <1308075511-4745-14-git-send-email-stefanha@linux.vnet.ibm.com> In-Reply-To: <1308075511-4745-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1308075511-4745-1-git-send-email-stefanha@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 13/13] 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 4da35be..816edd6 100644 --- a/block.c +++ b/block.c @@ -2129,10 +2129,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); @@ -2141,6 +2145,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; @@ -2192,12 +2198,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, @@ -2216,6 +2228,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 10faa07..3518254 100644 --- a/trace-events +++ b/trace-events @@ -53,7 +53,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.3