qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 1/4] block: Extract the BlockAcctStats structure


From: Benoît Canet
Subject: [Qemu-devel] [PATCH 1/4] block: Extract the BlockAcctStats structure
Date: Fri, 5 Sep 2014 15:46:15 +0200

Extract the block accounting statistics into a structure so the block device
models can hold them in the future.

CC: Kevin Wolf <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
CC: Max Reitz <address@hidden>
CC: Eric Blake <address@hidden>

Signed-off-by: Benoît Canet <address@hidden>
---
 block.c                   | 11 ++++++-----
 block/qapi.c              | 19 ++++++++++---------
 include/block/block.h     |  7 +++++++
 include/block/block_int.h |  5 +----
 4 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/block.c b/block.c
index cb670fd..f7f559c 100644
--- a/block.c
+++ b/block.c
@@ -3363,8 +3363,8 @@ static int coroutine_fn 
bdrv_aligned_pwritev(BlockDriverState *bs,
 
     bdrv_set_dirty(bs, sector_num, nb_sectors);
 
-    if (bs->wr_highest_sector < sector_num + nb_sectors - 1) {
-        bs->wr_highest_sector = sector_num + nb_sectors - 1;
+    if (bs->stats.wr_highest_sector < sector_num + nb_sectors - 1) {
+        bs->stats.wr_highest_sector = sector_num + nb_sectors - 1;
     }
     if (bs->growable && ret >= 0) {
         bs->total_sectors = MAX(bs->total_sectors, sector_num + nb_sectors);
@@ -5582,9 +5582,10 @@ bdrv_acct_done(BlockDriverState *bs, BlockAcctCookie 
*cookie)
 {
     assert(cookie->type < BDRV_MAX_IOTYPE);
 
-    bs->nr_bytes[cookie->type] += cookie->bytes;
-    bs->nr_ops[cookie->type]++;
-    bs->total_time_ns[cookie->type] += get_clock() - cookie->start_time_ns;
+    bs->stats.nr_bytes[cookie->type] += cookie->bytes;
+    bs->stats.nr_ops[cookie->type]++;
+    bs->stats.total_time_ns[cookie->type] += get_clock() -
+                                             cookie->start_time_ns;
 }
 
 void bdrv_img_create(const char *filename, const char *fmt,
diff --git a/block/qapi.c b/block/qapi.c
index 79d1e6a..3d3d30b 100644
--- a/block/qapi.c
+++ b/block/qapi.c
@@ -333,15 +333,16 @@ static BlockStats *bdrv_query_stats(const 
BlockDriverState *bs)
     }
 
     s->stats = g_malloc0(sizeof(*s->stats));
-    s->stats->rd_bytes = bs->nr_bytes[BDRV_ACCT_READ];
-    s->stats->wr_bytes = bs->nr_bytes[BDRV_ACCT_WRITE];
-    s->stats->rd_operations = bs->nr_ops[BDRV_ACCT_READ];
-    s->stats->wr_operations = bs->nr_ops[BDRV_ACCT_WRITE];
-    s->stats->wr_highest_offset = bs->wr_highest_sector * BDRV_SECTOR_SIZE;
-    s->stats->flush_operations = bs->nr_ops[BDRV_ACCT_FLUSH];
-    s->stats->wr_total_time_ns = bs->total_time_ns[BDRV_ACCT_WRITE];
-    s->stats->rd_total_time_ns = bs->total_time_ns[BDRV_ACCT_READ];
-    s->stats->flush_total_time_ns = bs->total_time_ns[BDRV_ACCT_FLUSH];
+    s->stats->rd_bytes = bs->stats.nr_bytes[BDRV_ACCT_READ];
+    s->stats->wr_bytes = bs->stats.nr_bytes[BDRV_ACCT_WRITE];
+    s->stats->rd_operations = bs->stats.nr_ops[BDRV_ACCT_READ];
+    s->stats->wr_operations = bs->stats.nr_ops[BDRV_ACCT_WRITE];
+    s->stats->wr_highest_offset =
+        bs->stats.wr_highest_sector * BDRV_SECTOR_SIZE;
+    s->stats->flush_operations = bs->stats.nr_ops[BDRV_ACCT_FLUSH];
+    s->stats->wr_total_time_ns = bs->stats.total_time_ns[BDRV_ACCT_WRITE];
+    s->stats->rd_total_time_ns = bs->stats.total_time_ns[BDRV_ACCT_READ];
+    s->stats->flush_total_time_ns = bs->stats.total_time_ns[BDRV_ACCT_FLUSH];
 
     if (bs->file) {
         s->has_parent = true;
diff --git a/include/block/block.h b/include/block/block.h
index 8f4ad16..f47d66f 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -492,6 +492,13 @@ enum BlockAcctType {
     BDRV_MAX_IOTYPE,
 };
 
+typedef struct BlockAcctStats {
+    uint64_t nr_bytes[BDRV_MAX_IOTYPE];
+    uint64_t nr_ops[BDRV_MAX_IOTYPE];
+    uint64_t total_time_ns[BDRV_MAX_IOTYPE];
+    uint64_t wr_highest_sector;
+} BlockAcctStats;
+
 typedef struct BlockAcctCookie {
     int64_t bytes;
     int64_t start_time_ns;
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 8a61215..20954f3 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -359,10 +359,7 @@ struct BlockDriverState {
     bool         io_limits_enabled;
 
     /* I/O stats (display with "info blockstats"). */
-    uint64_t nr_bytes[BDRV_MAX_IOTYPE];
-    uint64_t nr_ops[BDRV_MAX_IOTYPE];
-    uint64_t total_time_ns[BDRV_MAX_IOTYPE];
-    uint64_t wr_highest_sector;
+    BlockAcctStats stats;
 
     /* I/O Limits */
     BlockLimits bl;
-- 
2.1.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]