summaryrefslogtreecommitdiffstats
path: root/chardev
diff options
context:
space:
mode:
authorPaolo Bonzini2021-02-25 11:47:52 +0100
committerPaolo Bonzini2021-03-06 11:41:54 +0100
commita9b1315f86d9323587b340bd3bf83b9d66a55563 (patch)
tree69ec68d3b38d77799bbe966451f43650aad8de23 /chardev
parentqga-vss: Use dynamic linking for GLib (diff)
downloadqemu-a9b1315f86d9323587b340bd3bf83b9d66a55563.tar.gz
qemu-a9b1315f86d9323587b340bd3bf83b9d66a55563.tar.xz
qemu-a9b1315f86d9323587b340bd3bf83b9d66a55563.zip
chardev: add nodelay option
The "delay" option was introduced as a way to enable Nagle's algorithm with ",nodelay". Since the short form for boolean options has now been deprecated, introduce a more properly named "nodelay" option. The "delay" option remains as an undocumented option. "delay" and "nodelay" are mutually exclusive. Because the check is done at consumption time, the code also rejects them if one of the two is specified via -set. Based-on: <20210226080526.651705-1-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'chardev')
-rw-r--r--chardev/char-socket.c13
-rw-r--r--chardev/char.c3
2 files changed, 14 insertions, 2 deletions
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 06a37c0cc8..c8bced76b7 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -1472,8 +1472,17 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
sock = backend->u.socket.data = g_new0(ChardevSocket, 1);
qemu_chr_parse_common(opts, qapi_ChardevSocket_base(sock));
- sock->has_nodelay = qemu_opt_get(opts, "delay");
- sock->nodelay = !qemu_opt_get_bool(opts, "delay", true);
+ if (qemu_opt_get(opts, "delay") && qemu_opt_get(opts, "nodelay")) {
+ error_setg(errp, "'delay' and 'nodelay' are mutually exclusive");
+ return;
+ }
+ sock->has_nodelay =
+ qemu_opt_get(opts, "delay") ||
+ qemu_opt_get(opts, "nodelay");
+ sock->nodelay =
+ !qemu_opt_get_bool(opts, "delay", true) ||
+ qemu_opt_get_bool(opts, "nodelay", false);
+
/*
* We have different default to QMP for 'server', hence
* we can't just check for existence of 'server'
diff --git a/chardev/char.c b/chardev/char.c
index 288efebd12..97cafd6849 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -868,6 +868,9 @@ QemuOptsList qemu_chardev_opts = {
.name = "delay",
.type = QEMU_OPT_BOOL,
},{
+ .name = "nodelay",
+ .type = QEMU_OPT_BOOL,
+ },{
.name = "reconnect",
.type = QEMU_OPT_NUMBER,
},{