[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/50] block: Remove wr_highest_offset from Bloc
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH 10/50] block: Remove wr_highest_offset from BlockAcctStats |
Date: |
Tue, 27 Jan 2015 13:01:07 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 |
On 01/26/2015 09:02 AM, Max Reitz wrote:
> BlockAcctStats contains statistics about the data transferred from and
> to the device; wr_highest_offset does not fit in with the rest.
>
> Furthermore, those statistics are supposed to be specific for a certain
> device and not necessarily for a BDS (see the comment above
> bdrv_get_stats()); on the other hand, wr_highest_offset may be a rather
> important information to know for each BDS. When BlockAcctStats is
> finally removed from the BDS, we will want to keep wr_highest_offset in
> the BDS.
Yes, I recently did work in libvirt to expose wr_highest_offset of
backing images during block commit (qemu still isn't populating it on
images opened only for read, but the point remains that it is a
statistic tied to the BDS, not the BB).
On the other hand, even the other statistics might make sense on both
BDS and BB level (at the BB level, how many bytes has the guest
read/written; at the BDS level, how many bytes were serviced by the
active layer vs. delegated to a backing layer).
I'm not sure if we are set up for that fine of a level of reporting yet,
but we shouldn't make it hard to implement later. But for now, I agree
with separating the definite BDS-only stat, leaving the rest of the
struct usable for either BDS or BB.
>
> Signed-off-by: Max Reitz <address@hidden>
> ---
> block.c | 4 +++-
> block/accounting.c | 9 ---------
> block/qapi.c | 4 ++--
> include/block/accounting.h | 3 ---
> include/block/block_int.h | 3 +++
> 5 files changed, 8 insertions(+), 15 deletions(-)
>
> diff --git a/block.c b/block.c
> +++ b/include/block/block_int.h
> @@ -366,6 +366,9 @@ struct BlockDriverState {
> /* I/O stats (display with "info blockstats"). */
> BlockAcctStats stats;
>
> + /* Highest sector index written to */
> + uint64_t wr_highest_sector;
Umm, now would be a great time to track this in bytes instead of
sectors, if that is not too difficult to do.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH 07/50] block: Make bdrv_is_inserted() recursive, (continued)
- [Qemu-devel] [PATCH 20/50] blockdev: Check blk_is_available() in sn-del-int-sync, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 21/50] blockdev: Check BB validity in internal snapshot TA, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 16/50] block: Prepare remaining BB functions for NULL BDS, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 22/50] blockdev: Check BB validity in drive-backup TA, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 10/50] block: Remove wr_highest_offset from BlockAcctStats, Max Reitz, 2015/01/26
- Re: [Qemu-devel] [PATCH 10/50] block: Remove wr_highest_offset from BlockAcctStats,
Eric Blake <=
- [Qemu-devel] [PATCH 18/50] block: Respect empty BB in bdrv_query_info(), Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 15/50] block: Fail requests to empty BlockBackend, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 19/50] blockdev: Use BlockBackend for blockdev-backup TA, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 17/50] block: Respect empty BB in bdrv_lookup_bs(), Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 23/50] blockdev: Catch NULL BDS in block_set_io_throttle, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 25/50] blockdev: Check BB validity in block-commit, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 27/50] blockdev: Check BB validity in blockdev-backup, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 24/50] blockdev: Check BB validity in block-stream, Max Reitz, 2015/01/26
- [Qemu-devel] [PATCH 28/50] blockdev: Check BB validity in drive-mirror, Max Reitz, 2015/01/26