block: Allow configuring whether to account failed and invalid ops

This patch adds two options, "stats-account-invalid" and
"stats-account-failed", that can be used to decide whether invalid and
failed I/O operations must be used when collecting statistics for
latency and last access time.

Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: ebc7e5966511a342cad428a392c5f5ad56b15213.1446044837.git.berto@igalia.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Alberto Garcia 2015-10-28 17:33:04 +02:00 committed by Kevin Wolf
parent 7ee12dafe9
commit 362e9299b3
6 changed files with 79 additions and 11 deletions

View file

@ -25,6 +25,7 @@
#define BLOCK_ACCOUNTING_H
#include <stdint.h>
#include <stdbool.h>
#include "qemu/typedefs.h"
@ -43,6 +44,8 @@ typedef struct BlockAcctStats {
uint64_t total_time_ns[BLOCK_MAX_IOTYPE];
uint64_t merged[BLOCK_MAX_IOTYPE];
int64_t last_access_time_ns;
bool account_invalid;
bool account_failed;
} BlockAcctStats;
typedef struct BlockAcctCookie {
@ -51,6 +54,8 @@ typedef struct BlockAcctCookie {
enum BlockAcctType type;
} BlockAcctCookie;
void block_acct_init(BlockAcctStats *stats, bool account_invalid,
bool account_failed);
void block_acct_start(BlockAcctStats *stats, BlockAcctCookie *cookie,
int64_t bytes, enum BlockAcctType type);
void block_acct_done(BlockAcctStats *stats, BlockAcctCookie *cookie);