From: Richard Henderson Date: Thu, 8 Jan 2026 01:53:21 +0000 (+1100) Subject: block: Drop use of Stat64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9fe14795573f7ec085ad0b23da5d07b0925b401;p=thirdparty%2Fqemu.git block: Drop use of Stat64 The Stat64 structure is an aid for 32-bit hosts, and is no longer required. Use plain 64-bit types. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- diff --git a/block/io.c b/block/io.c index cace297f22..e8fb4ede4d 100644 --- a/block/io.c +++ b/block/io.c @@ -39,6 +39,7 @@ #include "qemu/main-loop.h" #include "system/replay.h" #include "qemu/units.h" +#include "qemu/atomic.h" /* Maximum bounce buffer for copy-on-read and write zeroes, in bytes */ #define MAX_BOUNCE_BUFFER (32768 << BDRV_SECTOR_BITS) @@ -2044,7 +2045,14 @@ bdrv_co_write_req_finish(BdrvChild *child, int64_t offset, int64_t bytes, if (req->bytes) { switch (req->type) { case BDRV_TRACKED_WRITE: - stat64_max(&bs->wr_highest_offset, offset + bytes); + { + uint64_t new = offset + bytes; + uint64_t old = qatomic_read(&bs->wr_highest_offset); + + while (old < new) { + old = qatomic_cmpxchg(&bs->wr_highest_offset, old, new); + } + } /* fall through, to set dirty bits */ case BDRV_TRACKED_DISCARD: bdrv_set_dirty(bs, offset, bytes); diff --git a/block/qapi.c b/block/qapi.c index 9f5771e019..27e0ac6a32 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -651,7 +651,7 @@ bdrv_query_bds_stats(BlockDriverState *bs, bool blk_level) s->node_name = g_strdup(bdrv_get_node_name(bs)); } - s->stats->wr_highest_offset = stat64_get(&bs->wr_highest_offset); + s->stats->wr_highest_offset = qatomic_read(&bs->wr_highest_offset); s->driver_specific = bdrv_get_specific_stats(bs); diff --git a/include/block/block_int-common.h b/include/block/block_int-common.h index 6d0898e53d..9324af903d 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -30,7 +30,6 @@ #include "qemu/aiocb.h" #include "qemu/iov.h" #include "qemu/rcu.h" -#include "qemu/stats64.h" #define BLOCK_FLAG_LAZY_REFCOUNTS 8 @@ -1246,7 +1245,7 @@ struct BlockDriverState { QLIST_HEAD(, BdrvDirtyBitmap) dirty_bitmaps; /* Offset after the highest byte written to */ - Stat64 wr_highest_offset; + uint64_t wr_highest_offset; /* * If true, copy read backing sectors into image. Can be >1 if more