[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 2/9] block/curl: Remove readahead support
From: |
David Edmondson |
Subject: |
[RFC PATCH 2/9] block/curl: Remove readahead support |
Date: |
Tue, 18 Aug 2020 12:08:38 +0100 |
Block based caching and the current readahead support do not interact
well, so remove readahead support before adding block
caching. Readahead will be re-added later.
Signed-off-by: David Edmondson <david.edmondson@oracle.com>
---
block/curl.c | 23 ++++-------------------
docs/system/device-url-syntax.rst.inc | 7 -------
qapi/block-core.json | 4 ----
3 files changed, 4 insertions(+), 30 deletions(-)
diff --git a/block/curl.c b/block/curl.c
index 32ec760f66..d0c74d7de5 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -65,7 +65,6 @@ static CURLMcode __curl_multi_socket_action(CURLM
*multi_handle,
#define CURL_TIMEOUT_MAX 10000
#define CURL_BLOCK_OPT_URL "url"
-#define CURL_BLOCK_OPT_READAHEAD "readahead"
#define CURL_BLOCK_OPT_SSLVERIFY "sslverify"
#define CURL_BLOCK_OPT_TIMEOUT "timeout"
#define CURL_BLOCK_OPT_COOKIE "cookie"
@@ -76,7 +75,6 @@ static CURLMcode __curl_multi_socket_action(CURLM
*multi_handle,
#define CURL_BLOCK_OPT_PROXY_PASSWORD_SECRET "proxy-password-secret"
#define CURL_BLOCK_OPT_OFFSET "offset"
-#define CURL_BLOCK_OPT_READAHEAD_DEFAULT (256 * 1024)
#define CURL_BLOCK_OPT_SSLVERIFY_DEFAULT true
#define CURL_BLOCK_OPT_TIMEOUT_DEFAULT 5
@@ -124,7 +122,6 @@ typedef struct BDRVCURLState {
uint64_t len;
CURLState states[CURL_NUM_STATES];
char *url;
- size_t readahead_size;
bool sslverify;
uint64_t timeout;
char *cookie;
@@ -615,11 +612,6 @@ static QemuOptsList runtime_opts = {
.type = QEMU_OPT_STRING,
.help = "URL to open",
},
- {
- .name = CURL_BLOCK_OPT_READAHEAD,
- .type = QEMU_OPT_SIZE,
- .help = "Readahead size",
- },
{
.name = CURL_BLOCK_OPT_SSLVERIFY,
.type = QEMU_OPT_BOOL,
@@ -705,14 +697,6 @@ static int curl_open(BlockDriverState *bs, QDict *options,
int flags,
goto out_noclean;
}
- s->readahead_size = qemu_opt_get_size(opts, CURL_BLOCK_OPT_READAHEAD,
- CURL_BLOCK_OPT_READAHEAD_DEFAULT);
- if ((s->readahead_size & 0x1ff) != 0) {
- error_setg(errp, "HTTP_READAHEAD_SIZE %zd is not a multiple of 512",
- s->readahead_size);
- goto out_noclean;
- }
-
s->timeout = qemu_opt_get_number(opts, CURL_BLOCK_OPT_TIMEOUT,
CURL_BLOCK_OPT_TIMEOUT_DEFAULT);
if (s->timeout > CURL_TIMEOUT_MAX) {
@@ -898,7 +882,7 @@ static void curl_setup_preadv(BlockDriverState *bs,
CURLAIOCB *acb)
state->buf_off = 0;
g_free(state->orig_buf);
state->buf_start = start;
- state->buf_len = MIN(acb->end + s->readahead_size, s->len - start);
+ state->buf_len = MIN(acb->end, s->len - start);
end = start + state->buf_len - 1;
state->orig_buf = g_try_malloc(state->buf_len);
if (state->buf_len && state->orig_buf == NULL) {
@@ -971,8 +955,9 @@ static void curl_refresh_filename(BlockDriverState *bs)
{
BDRVCURLState *s = bs->opaque;
- /* "readahead" and "timeout" do not change the guest-visible data,
- * so ignore them */
+ /*
+ * "timeout" does not change the guest-visible data, so ignore it.
+ */
if (s->sslverify != CURL_BLOCK_OPT_SSLVERIFY_DEFAULT ||
s->cookie || s->username || s->password || s->proxyusername ||
s->proxypassword)
diff --git a/docs/system/device-url-syntax.rst.inc
b/docs/system/device-url-syntax.rst.inc
index 33f1ddfe6d..bc38b9df38 100644
--- a/docs/system/device-url-syntax.rst.inc
+++ b/docs/system/device-url-syntax.rst.inc
@@ -174,13 +174,6 @@ These are specified using a special URL syntax.
``url``
The full URL when passing options to the driver explicitly.
- ``readahead``
- The amount of data to read ahead with each range request to the
- remote server. This value may optionally have the suffix 'T', 'G',
- 'M', 'K', 'k' or 'b'. If it does not have a suffix, it will be
- assumed to be in bytes. The value must be a multiple of 512 bytes.
- It defaults to 256k.
-
``sslverify``
Whether to verify the remote server's certificate when connecting
over SSL. It can have the value 'on' or 'off'. It defaults to
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 197bdc1c36..d6f5e91cc3 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -3752,9 +3752,6 @@
#
# @url: URL of the image file
#
-# @readahead: Size of the read-ahead cache; must be a multiple of
-# 512 (defaults to 256 kB)
-#
# @timeout: Timeout for connections, in seconds (defaults to 5)
#
# @username: Username for authentication (defaults to none)
@@ -3771,7 +3768,6 @@
##
{ 'struct': 'BlockdevOptionsCurlBase',
'data': { 'url': 'str',
- '*readahead': 'int',
'*timeout': 'int',
'*username': 'str',
'*password-secret': 'str',
--
2.27.0
- [RFC PATCH 0/9] block/curl: Add caching of data downloaded from the remote server, David Edmondson, 2020/08/18
- [RFC PATCH 7/9] block/curl: Allow the user to control the number of cache blocks, David Edmondson, 2020/08/18
- [RFC PATCH 6/9] block/curl: Cache downloaded blocks, David Edmondson, 2020/08/18
- [RFC PATCH 8/9] block/curl: Allow 16 sockets/ACB, David Edmondson, 2020/08/18
- [RFC PATCH 4/9] block/curl: Perform IO in fixed size chunks, David Edmondson, 2020/08/18
- [RFC PATCH 1/9] block/curl: Add an 'offset' parameter, affecting all range requests, David Edmondson, 2020/08/18
- [RFC PATCH 2/9] block/curl: Remove readahead support,
David Edmondson <=
- [RFC PATCH 5/9] block/curl: Allow the blocksize to be specified by the user, David Edmondson, 2020/08/18
- [RFC PATCH 3/9] block/curl: Tracing, David Edmondson, 2020/08/18
- [RFC PATCH 9/9] block/curl: Add readahead support, David Edmondson, 2020/08/18
- Re: [RFC PATCH 0/9] block/curl: Add caching of data downloaded from the remote server, Stefan Hajnoczi, 2020/08/19