block: add empty account cookie type
commitf34444665481bf470c35182c2286de5eaf1465ce
authorAnton Nefedov <anton.nefedov@virtuozzo.com>
Mon, 23 Sep 2019 12:17:31 +0000 (23 15:17 +0300)
committerMax Reitz <mreitz@redhat.com>
Thu, 10 Oct 2019 08:56:18 +0000 (10 10:56 +0200)
treeb073369c0cf52e0c716635420a94e288a4bd56e9
parent159f85ddc81d56f9bd8c3822d5e7d59814c58e50
block: add empty account cookie type

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 <anton.nefedov@virtuozzo.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-id: 20190923121737.83281-4-anton.nefedov@virtuozzo.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
block/accounting.c
include/block/accounting.h