[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/14] qemu-io: Allow larger write zeroes under no fallback
From: |
Eric Blake |
Subject: |
[PATCH 03/14] qemu-io: Allow larger write zeroes under no fallback |
Date: |
Fri, 3 Dec 2021 17:15:28 -0600 |
When writing zeroes can fall back to a slow write, permitting an
overly large request can become an amplification denial of service
attack in triggering a large amount of work from a small request. But
the whole point of the no fallback flag is to quickly determine if
writing an entire device to zero can be done quickly (such as when it
is already known that the device started with zero contents); in those
cases, artificially capping things at 2G in qemu-io itself doesn't
help us.
Signed-off-by: Eric Blake <eblake@redhat.com>
---
qemu-io-cmds.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c
index 954955c12fb9..45a957093369 100644
--- a/qemu-io-cmds.c
+++ b/qemu-io-cmds.c
@@ -603,10 +603,6 @@ static int do_co_pwrite_zeroes(BlockBackend *blk, int64_t
offset,
.done = false,
};
- if (bytes > INT_MAX) {
- return -ERANGE;
- }
-
co = qemu_coroutine_create(co_pwrite_zeroes_entry, &data);
bdrv_coroutine_enter(blk_bs(blk), co);
while (!data.done) {
@@ -1160,8 +1156,9 @@ static int write_f(BlockBackend *blk, int argc, char
**argv)
if (count < 0) {
print_cvtnum_err(count, argv[optind]);
return count;
- } else if (count > BDRV_REQUEST_MAX_BYTES) {
- printf("length cannot exceed %" PRIu64 ", given %s\n",
+ } else if (count > BDRV_REQUEST_MAX_BYTES &&
+ !(flags & BDRV_REQ_NO_FALLBACK)) {
+ printf("length cannot exceed %" PRIu64 " without -n, given %s\n",
(uint64_t)BDRV_REQUEST_MAX_BYTES, argv[optind]);
return -EINVAL;
}
--
2.33.1
Re: [PATCH] spec: Add NBD_OPT_EXTENDED_HEADERS, Vladimir Sementsov-Ogievskiy, 2021/12/10
[PATCH 00/14] qemu patches for NBD_OPT_EXTENDED_HEADERS, Eric Blake, 2021/12/03
- [PATCH 02/14] qemu-io: Utilize 64-bit status during map, Eric Blake, 2021/12/03
- [PATCH 01/14] nbd/server: Minor cleanups, Eric Blake, 2021/12/03
- [PATCH 03/14] qemu-io: Allow larger write zeroes under no fallback,
Eric Blake <=
- [PATCH 05/14] nbd/server: Prepare for alternate-size headers, Eric Blake, 2021/12/03
- [PATCH 06/14] nbd: Prepare for 64-bit requests, Eric Blake, 2021/12/03
- [PATCH 04/14] nbd/client: Add safety check on chunk payload length, Eric Blake, 2021/12/03
- [PATCH 08/14] nbd/server: Initial support for extended headers, Eric Blake, 2021/12/03
- [PATCH 07/14] nbd: Add types for extended headers, Eric Blake, 2021/12/03
- [PATCH 09/14] nbd/server: Support 64-bit block status, Eric Blake, 2021/12/03
- [PATCH 11/14] nbd/client: Accept 64-bit hole chunks, Eric Blake, 2021/12/03
- [PATCH 10/14] nbd/client: Initial support for extended headers, Eric Blake, 2021/12/03