[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 19/36] block: add empty account cookie type
From: |
Max Reitz |
Subject: |
[PULL 19/36] block: add empty account cookie type |
Date: |
Thu, 10 Oct 2019 13:42:43 +0200 |
From: Anton Nefedov <address@hidden>
Each block_acct_done/failed call is designed to correspond to a
previous block_acct_start call, which initializes the stats cookie.
However sometimes it is not the case, e.g. some error paths might
report the same cookie twice because it is hard to accurately track if
the cookie was reported yet or not.
This patch cleans the cookie after report.
(Note: block_acct_failed/done without a previous block_acct_start at
all should be avoided. Uninitialized cookie might hold a garbage value
and there is still "< BLOCK_MAX_IOTYPE" assertion for that)
It will be particularly useful in ide code where it's hard to
keep track whether the request done its accounting or not: in the
following patch of the series, trim requests will do the accounting
separately.
Signed-off-by: Anton Nefedov <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>
---
include/block/accounting.h | 1 +
block/accounting.c | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/include/block/accounting.h b/include/block/accounting.h
index ba8b04d572..878b4c3581 100644
--- a/include/block/accounting.h
+++ b/include/block/accounting.h
@@ -33,6 +33,7 @@ typedef struct BlockAcctTimedStats BlockAcctTimedStats;
typedef struct BlockAcctStats BlockAcctStats;
enum BlockAcctType {
+ BLOCK_ACCT_NONE = 0,
BLOCK_ACCT_READ,
BLOCK_ACCT_WRITE,
BLOCK_ACCT_FLUSH,
diff --git a/block/accounting.c b/block/accounting.c
index 70a3d9a426..8d41c8a83a 100644
--- a/block/accounting.c
+++ b/block/accounting.c
@@ -195,6 +195,10 @@ static void block_account_one_io(BlockAcctStats *stats,
BlockAcctCookie *cookie,
assert(cookie->type < BLOCK_MAX_IOTYPE);
+ if (cookie->type == BLOCK_ACCT_NONE) {
+ return;
+ }
+
qemu_mutex_lock(&stats->lock);
if (failed) {
@@ -217,6 +221,8 @@ static void block_account_one_io(BlockAcctStats *stats,
BlockAcctCookie *cookie,
}
qemu_mutex_unlock(&stats->lock);
+
+ cookie->type = BLOCK_ACCT_NONE;
}
void block_acct_done(BlockAcctStats *stats, BlockAcctCookie *cookie)
--
2.21.0
- [PULL 06/36] block/backup: fix max_transfer handling for copy_range, (continued)
- [PULL 06/36] block/backup: fix max_transfer handling for copy_range, Max Reitz, 2019/10/10
- [PULL 08/36] block/backup: split shareable copying part from backup_do_cow, Max Reitz, 2019/10/10
- [PULL 09/36] block/backup: improve comment about image fleecing, Max Reitz, 2019/10/10
- [PULL 11/36] block/backup: fix block-comment style, Max Reitz, 2019/10/10
- [PULL 13/36] block: teach bdrv_debug_breakpoint skip filters with backing, Max Reitz, 2019/10/10
- [PULL 12/36] block: move block_copy from block/backup.c to separate file, Max Reitz, 2019/10/10
- [PULL 10/36] block/backup: introduce BlockCopyState, Max Reitz, 2019/10/10
- [PULL 15/36] iotests: 257: drop unused Drive.device field, Max Reitz, 2019/10/10
- [PULL 17/36] qapi: group BlockDeviceStats fields, Max Reitz, 2019/10/10
- [PULL 16/36] iotests: 257: drop device_add, Max Reitz, 2019/10/10
- [PULL 19/36] block: add empty account cookie type,
Max Reitz <=
- [PULL 18/36] qapi: add unmap to BlockDeviceStats, Max Reitz, 2019/10/10
- [PULL 20/36] ide: account UNMAP (TRIM) operations, Max Reitz, 2019/10/10
- [PULL 14/36] iotests: prepare 124 and 257 bitmap querying for backup-top filter, Max Reitz, 2019/10/10
- [PULL 21/36] scsi: store unmap offset and nb_sectors in request struct, Max Reitz, 2019/10/10
- [PULL 22/36] scsi: move unmap error checking to the complete callback, Max Reitz, 2019/10/10
- [PULL 23/36] scsi: account unmap operations, Max Reitz, 2019/10/10
- [PULL 24/36] file-posix: account discard operations, Max Reitz, 2019/10/10
- [PULL 25/36] qapi: query-blockstat: add driver specific file-posix stats, Max Reitz, 2019/10/10
- [PULL 26/36] iotests: Fix 125 for growth_mode = metadata, Max Reitz, 2019/10/10
- [PULL 27/36] iotests: Disable 125 on broken XFS versions, Max Reitz, 2019/10/10