From patchwork Wed Jul 27 13:44:54 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 107090 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 ACBD2B6F68 for ; Thu, 28 Jul 2011 00:32:00 +1000 (EST) Received: from localhost ([::1]:39871 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qm4Rk-0003fL-Lv for incoming@patchwork.ozlabs.org; Wed, 27 Jul 2011 09:46:48 -0400 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 Received: from stefanha-thinkpad.ibm.com ([9.78.66.144]) by d06av09.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p6RDj1DN016013; Wed, 27 Jul 2011 07:45:09 -0600 From: Stefan Hajnoczi To: Date: Wed, 27 Jul 2011 14:44:54 +0100 Message-Id: <1311774295-8696-15-git-send-email-stefanha@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.5.4 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> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Received-From: 194.196.100.167 Cc: Kevin Wolf , Anthony Liguori , Stefan Hajnoczi , Adam Litke Subject: [Qemu-devel] [PATCH 14/15] 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 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