mirror of https://github.com/xqemu/xqemu.git
block: use Stat64 for wr_highest_offset
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20170605123908.18777-12-pbonzini@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com>
This commit is contained in:
parent
ae2d489c34
commit
f7946da274
|
@ -1405,9 +1405,7 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChild *child,
|
||||||
++bs->write_gen;
|
++bs->write_gen;
|
||||||
bdrv_set_dirty(bs, start_sector, end_sector - start_sector);
|
bdrv_set_dirty(bs, start_sector, end_sector - start_sector);
|
||||||
|
|
||||||
if (bs->wr_highest_offset < offset + bytes) {
|
stat64_max(&bs->wr_highest_offset, offset + bytes);
|
||||||
bs->wr_highest_offset = offset + bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret >= 0) {
|
if (ret >= 0) {
|
||||||
bs->total_sectors = MAX(bs->total_sectors, end_sector);
|
bs->total_sectors = MAX(bs->total_sectors, end_sector);
|
||||||
|
|
|
@ -441,7 +441,7 @@ static BlockStats *bdrv_query_bds_stats(const BlockDriverState *bs,
|
||||||
s->node_name = g_strdup(bdrv_get_node_name(bs));
|
s->node_name = g_strdup(bdrv_get_node_name(bs));
|
||||||
}
|
}
|
||||||
|
|
||||||
s->stats->wr_highest_offset = bs->wr_highest_offset;
|
s->stats->wr_highest_offset = stat64_get(&bs->wr_highest_offset);
|
||||||
|
|
||||||
if (bs->file) {
|
if (bs->file) {
|
||||||
s->has_parent = true;
|
s->has_parent = true;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "qemu/option.h"
|
#include "qemu/option.h"
|
||||||
#include "qemu/queue.h"
|
#include "qemu/queue.h"
|
||||||
#include "qemu/coroutine.h"
|
#include "qemu/coroutine.h"
|
||||||
|
#include "qemu/stats64.h"
|
||||||
#include "qemu/timer.h"
|
#include "qemu/timer.h"
|
||||||
#include "qapi-types.h"
|
#include "qapi-types.h"
|
||||||
#include "qemu/hbitmap.h"
|
#include "qemu/hbitmap.h"
|
||||||
|
@ -604,9 +605,6 @@ struct BlockDriverState {
|
||||||
/* Callback before write request is processed */
|
/* Callback before write request is processed */
|
||||||
NotifierWithReturnList before_write_notifiers;
|
NotifierWithReturnList before_write_notifiers;
|
||||||
|
|
||||||
/* Offset after the highest byte written to */
|
|
||||||
uint64_t wr_highest_offset;
|
|
||||||
|
|
||||||
/* threshold limit for writes, in bytes. "High water mark". */
|
/* threshold limit for writes, in bytes. "High water mark". */
|
||||||
uint64_t write_threshold_offset;
|
uint64_t write_threshold_offset;
|
||||||
NotifierWithReturn write_threshold_notifier;
|
NotifierWithReturn write_threshold_notifier;
|
||||||
|
@ -619,6 +617,9 @@ struct BlockDriverState {
|
||||||
|
|
||||||
QLIST_HEAD(, BdrvDirtyBitmap) dirty_bitmaps;
|
QLIST_HEAD(, BdrvDirtyBitmap) dirty_bitmaps;
|
||||||
|
|
||||||
|
/* Offset after the highest byte written to */
|
||||||
|
Stat64 wr_highest_offset;
|
||||||
|
|
||||||
/* If true, copy read backing sectors into image. Can be >1 if more
|
/* If true, copy read backing sectors into image. Can be >1 if more
|
||||||
* than one client has requested copy-on-read. Accessed with atomic
|
* than one client has requested copy-on-read. Accessed with atomic
|
||||||
* ops.
|
* ops.
|
||||||
|
|
Loading…
Reference in New Issue