mirror of https://gitee.com/openkylin/qemu.git
block: Use uint64_t for BdrvTrackedRequest byte fields
This matches the types used for bytes in the rest parts of block layer. In the case of bdrv_co_truncate, new_bytes can be the image size which probably doesn't fit in a 32 bit int. Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
0b9fd3f467
commit
22931a1533
|
@ -601,9 +601,11 @@ static void tracked_request_end(BdrvTrackedRequest *req)
|
|||
static void tracked_request_begin(BdrvTrackedRequest *req,
|
||||
BlockDriverState *bs,
|
||||
int64_t offset,
|
||||
unsigned int bytes,
|
||||
uint64_t bytes,
|
||||
enum BdrvTrackedRequestType type)
|
||||
{
|
||||
assert(bytes <= INT64_MAX && offset <= INT64_MAX - bytes);
|
||||
|
||||
*req = (BdrvTrackedRequest){
|
||||
.bs = bs,
|
||||
.offset = offset,
|
||||
|
@ -625,7 +627,7 @@ static void tracked_request_begin(BdrvTrackedRequest *req,
|
|||
static void mark_request_serialising(BdrvTrackedRequest *req, uint64_t align)
|
||||
{
|
||||
int64_t overlap_offset = req->offset & ~(align - 1);
|
||||
unsigned int overlap_bytes = ROUND_UP(req->offset + req->bytes, align)
|
||||
uint64_t overlap_bytes = ROUND_UP(req->offset + req->bytes, align)
|
||||
- overlap_offset;
|
||||
|
||||
if (!req->serialising) {
|
||||
|
@ -683,7 +685,7 @@ static int bdrv_get_cluster_size(BlockDriverState *bs)
|
|||
}
|
||||
|
||||
static bool tracked_request_overlaps(BdrvTrackedRequest *req,
|
||||
int64_t offset, unsigned int bytes)
|
||||
int64_t offset, uint64_t bytes)
|
||||
{
|
||||
/* aaaa bbbb */
|
||||
if (offset >= req->overlap_offset + req->overlap_bytes) {
|
||||
|
|
|
@ -69,12 +69,12 @@ enum BdrvTrackedRequestType {
|
|||
typedef struct BdrvTrackedRequest {
|
||||
BlockDriverState *bs;
|
||||
int64_t offset;
|
||||
unsigned int bytes;
|
||||
uint64_t bytes;
|
||||
enum BdrvTrackedRequestType type;
|
||||
|
||||
bool serialising;
|
||||
int64_t overlap_offset;
|
||||
unsigned int overlap_bytes;
|
||||
uint64_t overlap_bytes;
|
||||
|
||||
QLIST_ENTRY(BdrvTrackedRequest) list;
|
||||
Coroutine *co; /* owner, used for deadlock detection */
|
||||
|
|
Loading…
Reference in New Issue