From patchwork Tue Jun 14 18:18:31 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 100412 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 6088CB6F88 for ; Wed, 15 Jun 2011 04:45:20 +1000 (EST) Received: from localhost ([::1]:55215 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWYc1-0003QP-0U for incoming@patchwork.ozlabs.org; Tue, 14 Jun 2011 14:45:17 -0400 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 Received: from stefanha-thinkpad.ibm.com (sig-9-145-202-176.de.ibm.com [9.145.202.176]) by d06av12.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p5EIIdDu014627; Tue, 14 Jun 2011 12:18:49 -0600 From: Stefan Hajnoczi To: Date: Tue, 14 Jun 2011 19:18:31 +0100 Message-Id: <1308075511-4745-14-git-send-email-stefanha@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.5.3 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> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Received-From: 194.196.100.162 Cc: Kevin Wolf , Anthony Liguori , Stefan Hajnoczi , Adam Litke Subject: [Qemu-devel] [PATCH 13/13] trace: trace bdrv_aio_readv/writev error paths X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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