From patchwork Thu Aug 11 23:44:20 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 109727 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 390ACB6F76 for ; Fri, 12 Aug 2011 09:44:50 +1000 (EST) Received: from localhost ([::1]:34014 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrevZ-0007mN-1r for incoming@patchwork.ozlabs.org; Thu, 11 Aug 2011 19:44:41 -0400 Received: from eggs.gnu.org ([140.186.70.92]:50104) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrevJ-0007R9-4a for qemu-devel@nongnu.org; Thu, 11 Aug 2011 19:44:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QrevF-0002qM-2x for qemu-devel@nongnu.org; Thu, 11 Aug 2011 19:44:25 -0400 Received: from verein.lst.de ([213.95.11.211]:44961 helo=newverein.lst.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrevE-0002qE-Q4 for qemu-devel@nongnu.org; Thu, 11 Aug 2011 19:44:21 -0400 Received: by newverein.lst.de (Postfix, from userid 2407) id 999F01417F; Fri, 12 Aug 2011 01:44:20 +0200 (CEST) Date: Fri, 12 Aug 2011 01:44:20 +0200 From: Christoph Hellwig To: qemu-devel@nongnu.org Message-ID: <20110811234420.GA19502@lst.de> References: <20110811234411.GA19487@lst.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20110811234411.GA19487@lst.de> User-Agent: Mutt/1.5.17 (2007-11-01) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 213.95.11.211 Subject: [Qemu-devel] [PATCH 1/3] block: include flush requests in info blockstats 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 Signed-off-by: Christoph Hellwig Index: qemu/block.c =================================================================== --- qemu.orig/block.c 2011-08-11 12:32:35.842658196 +0200 +++ qemu/block.c 2011-08-11 16:04:48.302061893 +0200 @@ -1888,11 +1888,13 @@ static void bdrv_stats_iter(QObject *dat " wr_bytes=%" PRId64 " rd_operations=%" PRId64 " wr_operations=%" PRId64 + " flush_operations=%" PRId64 "\n", qdict_get_int(qdict, "rd_bytes"), qdict_get_int(qdict, "wr_bytes"), qdict_get_int(qdict, "rd_operations"), - qdict_get_int(qdict, "wr_operations")); + qdict_get_int(qdict, "wr_operations"), + qdict_get_int(qdict, "flush_operations")); } void bdrv_stats_print(Monitor *mon, const QObject *data) @@ -1910,12 +1912,16 @@ static QObject* bdrv_info_stats_bs(Block "'wr_bytes': %" PRId64 "," "'rd_operations': %" PRId64 "," "'wr_operations': %" PRId64 "," - "'wr_highest_offset': %" PRId64 + "'wr_highest_offset': %" PRId64 "," + "'flush_operations': %" PRId64 "} }", - bs->rd_bytes, bs->wr_bytes, - bs->rd_ops, bs->wr_ops, + bs->rd_bytes, + bs->wr_bytes, + bs->rd_ops, + bs->wr_ops, bs->wr_highest_sector * - (uint64_t)BDRV_SECTOR_SIZE); + (uint64_t)BDRV_SECTOR_SIZE, + bs->flush_ops); dict = qobject_to_qdict(res); if (*bs->device_name) { @@ -2579,6 +2585,8 @@ BlockDriverAIOCB *bdrv_aio_flush(BlockDr trace_bdrv_aio_flush(bs, opaque); + bs->flush_ops++; + if (bs->open_flags & BDRV_O_NO_FLUSH) { return bdrv_aio_noop_em(bs, cb, opaque); } Index: qemu/block_int.h =================================================================== --- qemu.orig/block_int.h 2011-08-11 12:32:35.852658142 +0200 +++ qemu/block_int.h 2011-08-11 16:04:48.302061893 +0200 @@ -188,6 +188,7 @@ struct BlockDriverState { uint64_t wr_bytes; uint64_t rd_ops; uint64_t wr_ops; + uint64_t flush_ops; uint64_t wr_highest_sector; /* Whether the disk can expand beyond total_sectors */ Index: qemu/qmp-commands.hx =================================================================== --- qemu.orig/qmp-commands.hx 2011-08-11 12:32:36.062657004 +0200 +++ qemu/qmp-commands.hx 2011-08-11 16:04:48.305395208 +0200 @@ -1201,6 +1201,7 @@ Each json-object contain the following: - "wr_bytes": bytes written (json-int) - "rd_operations": read operations (json-int) - "wr_operations": write operations (json-int) + - "flush_operations": cache flush operations (json-int) - "wr_highest_offset": Highest offset of a sector written since the BlockDriverState has been opened (json-int) - "parent": Contains recursively the statistics of the underlying @@ -1222,6 +1223,7 @@ Example: "wr_operations":751, "rd_bytes":122567168, "rd_operations":36772 + "flush_operations":61, } }, "stats":{ @@ -1230,6 +1232,7 @@ Example: "wr_operations":692, "rd_bytes":122739200, "rd_operations":36604 + "flush_operations":51, } }, { @@ -1240,6 +1243,7 @@ Example: "wr_operations":0, "rd_bytes":0, "rd_operations":0 + "flush_operations":0, } }, { @@ -1250,6 +1254,7 @@ Example: "wr_operations":0, "rd_bytes":0, "rd_operations":0 + "flush_operations":0, } }, { @@ -1260,6 +1265,7 @@ Example: "wr_operations":0, "rd_bytes":0, "rd_operations":0 + "flush_operations":0, } } ]