qemu-e2k/include
Vladimir Sementsov-Ogievskiy 801625e69d block/throttle-groups: throttle_group_co_io_limits_intercept(): 64bit bytes
The function is called from 64bit io handlers, and bytes is just passed
to throttle_account() which is 64bit too (unsigned though). So, let's
convert intermediate argument to 64bit too.

This patch is a first in the 64-bit-blocklayer series, so we are
generally moving to int64_t for both offset and bytes parameters on all
io paths. Main motivation is realization of 64-bit write_zeroes
operation for fast zeroing large disk chunks, up to the whole disk.

We chose signed type, to be consistent with off_t (which is signed) and
with possibility for signed return type (where negative value means
error).

Patch-correctness audit by Eric Blake:

  Caller has 32-bit, this patch now causes widening which is safe:
  block/block-backend.c: blk_do_preadv() passes 'unsigned int'
  block/block-backend.c: blk_do_pwritev_part() passes 'unsigned int'
  block/throttle.c: throttle_co_pwrite_zeroes() passes 'int'
  block/throttle.c: throttle_co_pdiscard() passes 'int'

  Caller has 64-bit, this patch fixes potential bug where pre-patch
  could narrow, except it's easy enough to trace that callers are still
  capped at 2G actions:
  block/throttle.c: throttle_co_preadv() passes 'uint64_t'
  block/throttle.c: throttle_co_pwritev() passes 'uint64_t'

  Implementation in question: block/throttle-groups.c
  throttle_group_co_io_limits_intercept() takes 'unsigned int bytes'
  and uses it: argument to util/throttle.c throttle_account(uint64_t)

  All safe: it patches a latent bug, and does not introduce any 64-bit
  gotchas once throttle_co_p{read,write}v are relaxed, and assuming
  throttle_account() is not buggy.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Message-Id: <20201211183934.169161-7-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
2021-02-03 08:14:00 -06:00
..
authz Prefer 'on' | 'off' over 'yes' | 'no' for bool options 2021-01-29 17:07:53 +00:00
block block/throttle-groups: throttle_group_co_io_limits_intercept(): 64bit bytes 2021-02-03 08:14:00 -06:00
chardev
crypto
disas disas: Push const down through host disassembly 2021-01-07 05:09:42 -10:00
exec memory: add readonly support to memory_region_init_ram_from_file() 2021-02-01 17:07:34 -05:00
fpu
hw arm: Remove frq properties on CMSDK timer, dualtimer, watchdog, ARMSSE 2021-01-29 15:54:44 +00:00
io io: Document qmp oob suitability of qio_channel_shutdown and io_shutdown 2021-01-13 10:21:17 +01:00
libdecnumber
migration
monitor
net net: checksum: Introduce fine control over checksum type 2021-01-25 17:04:56 +08:00
qapi qapi: Introduce QAPI_LIST_APPEND 2021-01-28 08:08:45 +01:00
qemu util/iov: make qemu_iovec_init_extended() honest 2021-02-03 08:00:33 -06:00
qom
scsi scsi/utils: Add INVALID_PARAM_VALUE sense code definition 2021-01-22 14:51:35 +01:00
standard-headers Update linux headers to 5.11-rc2 2021-01-21 11:19:45 +01:00
sysemu block: Separate blk_is_writable() and blk_supports_write_perm() 2021-01-27 20:45:20 +01:00
tcg tcg: Restart code generation when we run out of temps 2021-01-24 08:03:27 -10:00
ui vnc: support "-vnc help" 2021-01-23 15:55:07 -05:00
user
elf.h
glib-compat.h
qemu-common.h
qemu-io.h
trace-tcg.h