From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596528891; cv=none; d=zohomail.com; s=zohoarc; b=OZpTxZUwekYyLXU+c6LD+NcTm3mY16X20uv0np7Cu+8HVHb0QwlUX6/xislr1529SizjVhNt1n7eiK0aI6tDw9LqU0bUVTEyIGOXqNApZgEVRmVOiQ+/qKcl+aKq8iUA+z4jQyMrpkzyr+OCV36EouatX1871IqQUcVyC1dfstE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596528891; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sH777+/PkBAyZCm57zzK9lAzd33EtmNJ0pAPscHln8w=; b=FPvrC6zQvw7Ys8c21ap0rrJUgWD87QJaJ1MudXo5C4UZIbLQ2RUDQbvv7glWs6H4VlGEQfpHtlUiZkBNsnLdN5yO8Ya0wIS1ljOQL2RjnYNuCgFZMzmDzfLNJ33TRJ/Osd2x62ixM+NVKafRYPnj49asqo3LJzO5EFp9DUZ5OZY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596528891479198.1519637782426; Tue, 4 Aug 2020 01:14:51 -0700 (PDT) Received: from localhost ([::1]:44314 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2s5y-0005C4-0d for importer@patchew.org; Tue, 04 Aug 2020 04:14:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51124) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s2x-0003Tt-M6; Tue, 04 Aug 2020 04:11:43 -0400 Received: from mout.web.de ([212.227.15.3]:40871) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s2v-0006YQ-ED; Tue, 04 Aug 2020 04:11:43 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MhFlm-1kh8o11pNy-00eM5N; Tue, 04 Aug 2020 10:11:35 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528695; bh=n3bcMhJUMtsuhIlemqKrJB34futb6YIRpTnSTeJBGnI=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=Dr4wLiuXuzomvgw/qkCKoZWFu6fAY26EbnWSF23e90REUX44mGxSaLa58edhaxCg1 4V7EeFxXYg8xAZCCVi1nJQdcoY7WGsqUXMN+KBnoY/K8BWntWi0n0H3fMEZE2n+wxE LWkuegoFY3EuFCsKhahapPV6WuxP2abnBeNPlhSA= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:11:34 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 1/8] Introduce yank feature Message-ID: <0092d4fe5f64078a18db3790c46c508416dbdb6b.1596528468.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/cNvt2/QeAA5ULQSLCtEiViN"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:Es88qH/Aqvply2anQKFgFbpXzprz9NwL4B6hgl1rTb5kN30bLgE oqL31Igh9KVjqNOjcr3G15p9x09+4zx2KP3IK7SviT2Z8V/J4tm+nHLzdGl7QjA5eQLfqTM 5Ah0P8Gd8AgW5uhk1V9zDZ3PjuDm4MwC0Nxn/j0KOd+EAW/XujfP6QuupEi1SPq6IgUVl2f 2QiSwrJtYt/wf21HD9/dA== X-UI-Out-Filterresults: notjunk:1;V03:K0:8THhKp3WRXE=:nxZTBFgceZf+bMeyaQrgT4 4h4GiDSNvfJNNoFEfQJw/MW9HDP0876ew/AUYpQdZKSuwxJij/4Mk9BtwetmN3Qg73/0NkSCH XbgfhaOsJtCNUOHvLhuzAl3yXhdeq+qWcjgGyH+RwbTdse8QWKmgz822tdd+sobfscXzKK0HD I9D78cc2efzviSRe8sQE4uU2X4FEkU6v5CE+Kyyk/dq31OvYdLtNQvnRUYBC1Frr24W+HqGic 9Z0Gb6rA9SPb5NwpVFuBGiGh+mx9tTyqnhyi4BbG4RUADn5XZI9ykA5guwSKiWwn868qJujEf n8RO58/3IhMxs3EV/TBF6kyWWAmptaeQw1KKqzjo6fxj0pxh+Q2MKlkPrsKS3DUk8fWyD/GcD bVGDOrEF5RV/fH8W6RK+8btRmnG0OO8/V/uyvlJeOS7HGn3Uli9PyRh+HsevtVRIr/e7DHjmS 9RzhV5q3Gm20g6eRU70jY+RQo85stF2CJc/YVNNdwzwIFt+to4/m9rWnqzfb/O15d2EFaMrXe 5ta9UKo/K5efMV1uKd+YrDk5KG5W88KQArxW9frS2bVTsIOHk/OOmkxJM2mdrcuBZ83ASrhhN rVcXYmhP4tiWzRy1YCF4yF/ZeTkz15vfV6yKtWVYAUyX5wIkTB0QI5ST38730Wx6c5UNJkRpU 7ueyIce3Y2TWNJhOizG8AVG4LmePLSy7RCD6q0OWI00VEScnGt0gLI1Oh20jnR4S6TuGkaVrf zNZzlC5AA8KNZduxfuux0nIt1h+8ttgQRp2A1vZ13I/9RJyl+JGa8mb/7D/tl7iazZuwTK4sB La6xb4hEbKg4mo4/tvqLPbMA8boSQSh+C1xQZ1CqBmf6NpAuacUS7H6yXiu7r0SxROxed+XVZ zxr1Y1khHVHwK59bUZ5u46sTeGkgPGBM36hZxfWmu5BaCHjv9T7jLQF86iO/Zc52dXWQSwYdU MgM0XH1ZIw+Eapdn+FZKiK9ob45M73sRBzlmcAp1BqP4kxsh2faKq52etwykhe4HycHr69mXX AI5GsujyOUOdCic7wOg9PlGE7QTq6IshomrBeddh9KttJVul0o5bSq92y7KLDo2bhZrx7Kf5B HxcyfQsr4TvLmTOfEcVQ1jRYwwq+rk6rwo0P6NsTDil4L16mp0T1jIBrG37C8TXXgJkkBANFo AAILCiljug6RRuRy34g4QS3t1tYQfjA3BdSqVVOSN6Pl4mVMbCVxijNyi35Z3VERRWfPVcDdH khrdkF4+T59YjvQ+3eMG3/npOHN6tDo8zvy/5OA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:11:39 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/cNvt2/QeAA5ULQSLCtEiViN Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The yank feature allows to recover from hanging qemu by "yanking" at various parts. Other qemu systems can register themselves and multiple yank functions. Then all yank functions for selected instances can be called by the 'yank' out-of-band qmp command. Available instances can be queried by a 'query-yank' oob command. Signed-off-by: Lukas Straub Acked-by: Stefan Hajnoczi Acked-by: Dr. David Alan Gilbert Reviewed-by: Daniel P. Berrang=C3=A9 --- include/qemu/yank.h | 80 +++++++++++++++++++ qapi/misc.json | 45 +++++++++++ util/Makefile.objs | 1 + util/yank.c | 184 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 310 insertions(+) create mode 100644 include/qemu/yank.h create mode 100644 util/yank.c diff --git a/include/qemu/yank.h b/include/qemu/yank.h new file mode 100644 index 0000000000..cd184fcd05 --- /dev/null +++ b/include/qemu/yank.h @@ -0,0 +1,80 @@ +/* + * QEMU yank feature + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#ifndef YANK_H +#define YANK_H + +typedef void (YankFn) (void *opaque); + +/** + * yank_register_instance: Register a new instance. + * + * This registers a new instance for yanking. Must be called before any ya= nk + * function is registered for this instance. + * + * This function is thread-safe. + * + * @instance_name: The globally unique name of the instance. + * @errp: ... + */ +void yank_register_instance(const char *instance_name, Error **errp); + +/** + * yank_unregister_instance: Unregister a instance. + * + * This unregisters a instance. Must be called only after every yank funct= ion + * of the instance has been unregistered. + * + * This function is thread-safe. + * + * @instance_name: The name of the instance. + */ +void yank_unregister_instance(const char *instance_name); + +/** + * yank_register_function: Register a yank function + * + * This registers a yank function. All limitations of qmp oob commands app= ly + * to the yank function as well. + * + * This function is thread-safe. + * + * @instance_name: The name of the instance + * @func: The yank function + * @opaque: Will be passed to the yank function + */ +void yank_register_function(const char *instance_name, + YankFn *func, + void *opaque); + +/** + * yank_unregister_function: Unregister a yank function + * + * This unregisters a yank function. + * + * This function is thread-safe. + * + * @instance_name: The name of the instance + * @func: func that was passed to yank_register_function + * @opaque: opaque that was passed to yank_register_function + */ +void yank_unregister_function(const char *instance_name, + YankFn *func, + void *opaque); + +/** + * yank_unregister_function: Generic yank function for iochannel + * + * This is a generic yank function which will call qio_channel_shutdown on= the + * provided QIOChannel. + * + * @opaque: QIOChannel to shutdown + */ +void yank_generic_iochannel(void *opaque); +#endif diff --git a/qapi/misc.json b/qapi/misc.json index 9d32820dc1..0d6a8f20b7 100644 --- a/qapi/misc.json +++ b/qapi/misc.json @@ -1615,3 +1615,48 @@ ## { 'command': 'query-vm-generation-id', 'returns': 'GuidInfo' } +## +# @YankInstances: +# +# @instances: List of yank instances. +# +# Yank instances are named after the following schema: +# "blockdev:", "chardev:" and "migration" +# +# Since: 5.1 +## +{ 'struct': 'YankInstances', 'data': {'instances': ['str'] } } + +## +# @yank: +# +# Recover from hanging qemu by yanking the specified instances. +# +# Takes @YankInstances as argument. +# +# Returns: nothing. +# +# Example: +# +# -> { "execute": "yank", "arguments": { "instances": ["blockdev:nbd0"] } } +# <- { "return": {} } +# +# Since: 5.1 +## +{ 'command': 'yank', 'data': 'YankInstances', 'allow-oob': true } + +## +# @query-yank: +# +# Query yank instances. +# +# Returns: @YankInstances +# +# Example: +# +# -> { "execute": "query-yank" } +# <- { "return": { "instances": ["blockdev:nbd0"] } } +# +# Since: 5.1 +## +{ 'command': 'query-yank', 'returns': 'YankInstances', 'allow-oob': true } diff --git a/util/Makefile.objs b/util/Makefile.objs index cc5e37177a..13faa98425 100644 --- a/util/Makefile.objs +++ b/util/Makefile.objs @@ -45,6 +45,7 @@ util-obj-$(CONFIG_GIO) +=3D dbus.o dbus.o-cflags =3D $(GIO_CFLAGS) dbus.o-libs =3D $(GIO_LIBS) util-obj-$(CONFIG_USER_ONLY) +=3D selfmap.o +util-obj-y +=3D yank.o ####################################################################### # code used by both qemu system emulation and qemu-img diff --git a/util/yank.c b/util/yank.c new file mode 100644 index 0000000000..b0cd27728b --- /dev/null +++ b/util/yank.c @@ -0,0 +1,184 @@ +/* + * QEMU yank feature + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "qemu/thread.h" +#include "qemu/queue.h" +#include "qapi/qapi-commands-misc.h" +#include "io/channel.h" +#include "qemu/yank.h" + +struct YankFuncAndParam { + YankFn *func; + void *opaque; + QLIST_ENTRY(YankFuncAndParam) next; +}; + +struct YankInstance { + char *name; + QLIST_HEAD(, YankFuncAndParam) yankfns; + QLIST_ENTRY(YankInstance) next; +}; + +static QemuMutex lock; +static QLIST_HEAD(yankinst_list, YankInstance) head + =3D QLIST_HEAD_INITIALIZER(head); + +static struct YankInstance *yank_find_instance(const char *name) +{ + struct YankInstance *tmp, *instance; + instance =3D NULL; + QLIST_FOREACH(tmp, &head, next) { + if (!strcmp(tmp->name, name)) { + instance =3D tmp; + } + } + return instance; +} + +void yank_register_instance(const char *instance_name, Error **errp) +{ + struct YankInstance *instance; + + qemu_mutex_lock(&lock); + + if (yank_find_instance(instance_name)) { + error_setg(errp, "duplicate yank instance name: '%s'", instance_na= me); + qemu_mutex_unlock(&lock); + return; + } + + instance =3D g_slice_new(struct YankInstance); + instance->name =3D g_strdup(instance_name); + QLIST_INIT(&instance->yankfns); + QLIST_INSERT_HEAD(&head, instance, next); + + qemu_mutex_unlock(&lock); +} + +void yank_unregister_instance(const char *instance_name) +{ + struct YankInstance *instance; + + qemu_mutex_lock(&lock); + instance =3D yank_find_instance(instance_name); + assert(instance); + + assert(QLIST_EMPTY(&instance->yankfns)); + QLIST_REMOVE(instance, next); + g_free(instance->name); + g_slice_free(struct YankInstance, instance); + + qemu_mutex_unlock(&lock); +} + +void yank_register_function(const char *instance_name, + YankFn *func, + void *opaque) +{ + struct YankInstance *instance; + struct YankFuncAndParam *entry; + + qemu_mutex_lock(&lock); + instance =3D yank_find_instance(instance_name); + assert(instance); + + entry =3D g_slice_new(struct YankFuncAndParam); + entry->func =3D func; + entry->opaque =3D opaque; + + QLIST_INSERT_HEAD(&instance->yankfns, entry, next); + qemu_mutex_unlock(&lock); +} + +void yank_unregister_function(const char *instance_name, + YankFn *func, + void *opaque) +{ + struct YankInstance *instance; + struct YankFuncAndParam *entry; + + qemu_mutex_lock(&lock); + instance =3D yank_find_instance(instance_name); + assert(instance); + + QLIST_FOREACH(entry, &instance->yankfns, next) { + if (entry->func =3D=3D func && entry->opaque =3D=3D opaque) { + QLIST_REMOVE(entry, next); + g_slice_free(struct YankFuncAndParam, entry); + qemu_mutex_unlock(&lock); + return; + } + } + + abort(); +} + +void yank_generic_iochannel(void *opaque) +{ + QIOChannel *ioc =3D QIO_CHANNEL(opaque); + + qio_channel_shutdown(ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); +} + +void qmp_yank(strList *instances, + Error **errp) +{ + strList *tmp; + struct YankInstance *instance; + struct YankFuncAndParam *entry; + + qemu_mutex_lock(&lock); + tmp =3D instances; + for (; tmp; tmp =3D tmp->next) { + instance =3D yank_find_instance(tmp->value); + if (!instance) { + error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, + "Instance '%s' not found", tmp->value); + qemu_mutex_unlock(&lock); + return; + } + } + tmp =3D instances; + for (; tmp; tmp =3D tmp->next) { + instance =3D yank_find_instance(tmp->value); + assert(instance); + QLIST_FOREACH(entry, &instance->yankfns, next) { + entry->func(entry->opaque); + } + } + qemu_mutex_unlock(&lock); +} + +YankInstances *qmp_query_yank(Error **errp) +{ + struct YankInstance *instance; + YankInstances *ret; + + ret =3D g_new0(YankInstances, 1); + ret->instances =3D NULL; + + qemu_mutex_lock(&lock); + QLIST_FOREACH(instance, &head, next) { + strList *entry; + entry =3D g_new0(strList, 1); + entry->value =3D g_strdup(instance->name); + entry->next =3D ret->instances; + ret->instances =3D entry; + } + qemu_mutex_unlock(&lock); + + return ret; +} + +static void __attribute__((__constructor__)) yank_init(void) +{ + qemu_mutex_init(&lock); +} -- 2.20.1 --Sig_/cNvt2/QeAA5ULQSLCtEiViN Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGDYACgkQNasLKJxd slg3zg/7B+renSS3D7WPrjnMPARgEtYDm1wQ6sDgOED0eq+KfUn09yhg/vDXIxOC 7muHlg7AqkOyZs3IEkyE4C03wTwi2ED0UTx8H5lrHisMs9x84R/tR8aqmhXmaqb6 u41izjUR4/gphToLVibxfXjU6nOsiWQ8l3mvWK50fuZBIIRo6UaZV/x2RxqxfXua Thz4FbQxfqYgcqeWhixnVrVxPC3+JvVzGwKOVp+cEA83n39is8LTQ8p3RPu0Hz1w ZjCsX959+NQXSqiHI4Y+NbxhWc/gzPHG4MSY0+UcvPObVqq58S5eSXQxnPVSrUIb 91SOcgeeP1QPc4BtYNC6Rh4kZdppydYICy6aS8WtmdNBiheoC/J3K/KsunjTVWc9 QEbggZIQlaUugnSGCuQ8PD2uhiFhxebnzTui1ehaLf+EW4fZwZhEbSSKM6e4g+nE vIGwv911fJRstG3FlLZZnqLlu5hFj/geTWq21l72inlZDaXr2jpR5QLAkUTWDur7 3zNxP/B1kIvDZlpb09gEqM45AIESnlYJkHnEFx/Ehn4X2qNIlzUlbK2E0dFMEhKg WRkakLtTFq3YEm4/ofPm/qKpxxmuzMXZJWuJvneruYDSNMidmHMNnzj3WdYkZxZB /IpVJwtYITDYycUAtjkFlLL2c5FSS0qSsu8SAFBmdQoc1+5NR1Q= =vVSP -----END PGP SIGNATURE----- --Sig_/cNvt2/QeAA5ULQSLCtEiViN-- From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596529195; cv=none; d=zohomail.com; s=zohoarc; b=C+WBTSH1O5I20pZ9KD7CdVvuateE0roIB/KOa4kC0hAmZNXSEC9uW13E4kACxHZuiBNvtKl8s8WKqRtbcbzjpRP6hUi7n9gd1oamkEsh3XZhgHiDpw4864rg7S3+gLe9esCvlEj4ZyxxnhvvnM1b7LZDhVLZ8AHrVijz6+fuWTk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596529195; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=svQFHpj6YzhfuDosvoUCam58oE+mcl55xwPZkUz1t2k=; b=AZOPI7V3ZUNwBiJKN0nICwiRyOPjdFRk6l/kqWuRvbsnAlF5UUhOkPAJFgcc37j0Cz8NFtCXlncfc8fd0i0t64Y/DfvEBhDspS/5vH3fhDu41VZziRjiHjQ3Ai0xWSGJsAXX1MSq1y+k8woACvjFt12tx0lFG9hCZaULbT8RL/U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596529194993311.2931530772315; Tue, 4 Aug 2020 01:19:54 -0700 (PDT) Received: from localhost ([::1]:52020 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2sAr-0008VS-3L for importer@patchew.org; Tue, 04 Aug 2020 04:19:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51142) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s31-0003Wa-TY; Tue, 04 Aug 2020 04:11:47 -0400 Received: from mout.web.de ([212.227.17.12]:41563) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s2z-0006ZP-KY; Tue, 04 Aug 2020 04:11:47 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MeSKR-1kO5x62UOd-00Q8VG; Tue, 04 Aug 2020 10:11:39 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528699; bh=gYLkaLVifVVybkD4dZzByIAONcymChjA5zGr5nxBC4k=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=WVmTnNZXS8YWJsXUGRNZWZiYhu/JXFhETNum2gjkbkv8xO4j12BCbqSMidLnSc5Y3 ddLUU/arITmvXb3RQ4wNTYVikmH/S89nMjZDlof+JmHdR7eNl6Bc9d7czh2/En6yM2 kmgl/6InD4b/AGAWVXCbc8sm4tjDNtbEqncwyTO8= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:11:37 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 2/8] block/nbd.c: Add yank feature Message-ID: <331864b96d198a6cfabd050581e94bc3452362aa.1596528468.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/1wryZ4_W3PBLDliGgKetNGE"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:RQvrVnOEw5VqZQ61FbfDNTJgN/jY2h+db6zwFQ//gDqUK2YzBWs YVZaJnsYcKB5t0/QyjhWufZqUGemmlIrnZwLFARs6ZXgahhwlu5bRvXBH22g2AlfNNNxWVK Ggpodglbql1NpU5jsbozVwjysIv4KR531m1fKKLjvf1ysl4cCs7aAKDw/54Por9DE7ms7c2 m35ByH5z7b912LZYsZRcg== X-UI-Out-Filterresults: notjunk:1;V03:K0:pCJd6LLGNZI=:Q5pHYFxlu6tHPNN09Nz05+ tw/mQSICLiuhiGdJBxo4y2qkJ592ArNfUKCWubC6ftcp3x3NKF8NtE/FQFqvJ/t9wULeh43oV dQMbXOvcX1D6bmFf7PADgj+zH8Xkj7yWEviMoNxyXBWNR3/EOd16jxx93bOLn0PaP1LZRcZzF KRof6d0+znSrCBx5hDRiT84ftDZWzv6ZkqxxWi7NmWGmshtpOO/TuS2kuM1oTt5rQrB8XGwAz uIUy8vLTWplafjOpkrscpISOVHXMpKOZ+PKpcdG2/WgPHP8VEtCTsdQbHmVanw0CgNPuNYaQe wbPMeXmVNglkTX5pTI50pVKmxWk+gwEiYKUAe1q2xZPhRtco2z4EmHYLZHqkPGTG8xuHH6t5R WynG3gGOiWCMQu/UrV3MDD+sYXBaQNAtOnexNsSJELlBKv18vJUbGTbazH404R3pvWy7dqQPu KKhFaoPC1bEF8W8zGbPs6sgZ8nMmfvc5I1ltRbZ/TdoZxv0dFPE4yNE7avv5S5OwqfZnN9fdY Jp1vAOT/PxFsf19g/jYAPIrPpFkyTf8J5yHzuptIbucmBP32KPhkZeNdKf+YyDstaR7iI/Pmz 9Ih2vB+RQmc0aOofTvbnBKSMYIoQkbeVmeHezfMmX46CG15ntO8NNjGX7WaVuMqPeLvxT08J5 oPE+3Xs6fsfoOtiqmf4ArQpz3IVCjnwythcHY0uWJHW4lOWl7AABKiqPS09izfq77pINhdPx1 5KDivcoL20cxl59od6nfeYBphWzrRG0lUWEwJqjVS/zhCSFZ+cDKhal6ePXjTwLSZ//jSelmX Bf/R0tEmPsPJCJOeXqoirnUqPUaRlV915iNpEkKvtmOPrAdoNKsluOKvT+awpGtjm1SeyOv1c gIBE8oDpe9VnpbmOZgNeR2/mXjascCOQxcVvovuIm+zTL7xBPMV5qgl5hquXvSYRGgK59Oi3s mptuJUS2NlDXPveaVsYCtB/VlmD0m2JAQW/eZQFsoWyaCWCKr5HGbP567zFP7ycUN2QYGKCdI Cf87sgi4/absZJRpieM10bloiPaVaHGZo+xUpcrlaYCZPnhzK0hhlHIyGCnuHj7o8+r1f1i/D +cukqPpm6j92gpldSG+QeWIE6a6gpE8OVH1jngoQ3LbV6VxIIn8pQyX78za06VZDALZlk2GL3 VWbO2euPhHO0zH9Tjn9BapoQ3QDpbmrz+ESeTI7kkLIoffcwLP7eq+oB3JLX15uQefTvaiE3S GcXjwB7qIgnDHMcToiPm13pApKeV+q7TneyDwuA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:11:44 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/1wryZ4_W3PBLDliGgKetNGE Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Register a yank function which shuts down the socket and sets s->state =3D NBD_CLIENT_QUIT. This is the same behaviour as if an error occured. Signed-off-by: Lukas Straub Acked-by: Stefan Hajnoczi Acked-by: Dr. David Alan Gilbert Reviewed-by: Daniel P. Berrang=C3=A9 --- block/nbd.c | 129 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 49 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 7bb881fef4..8632cf5340 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -35,6 +35,7 @@ #include "qemu/option.h" #include "qemu/cutils.h" #include "qemu/main-loop.h" +#include "qemu/atomic.h" #include "qapi/qapi-visit-sockets.h" #include "qapi/qmp/qstring.h" @@ -43,6 +44,8 @@ #include "block/nbd.h" #include "block/block_int.h" +#include "qemu/yank.h" + #define EN_OPTSTR ":exportname=3D" #define MAX_NBD_REQUESTS 16 @@ -84,6 +87,8 @@ typedef struct BDRVNBDState { NBDReply reply; BlockDriverState *bs; + char *yank_name; + /* Connection parameters */ uint32_t reconnect_delay; SocketAddress *saddr; @@ -93,10 +98,10 @@ typedef struct BDRVNBDState { char *x_dirty_bitmap; } BDRVNBDState; -static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr, - Error **errp); -static int nbd_client_handshake(BlockDriverState *bs, QIOChannelSocket *si= oc, - Error **errp); +static int nbd_establish_connection(BlockDriverState *bs, SocketAddress *s= addr, + Error **errp); +static int nbd_client_handshake(BlockDriverState *bs, Error **errp); +static void nbd_yank(void *opaque); static void nbd_clear_bdrvstate(BDRVNBDState *s) { @@ -109,17 +114,19 @@ static void nbd_clear_bdrvstate(BDRVNBDState *s) s->tlscredsid =3D NULL; g_free(s->x_dirty_bitmap); s->x_dirty_bitmap =3D NULL; + g_free(s->yank_name); + s->yank_name =3D NULL; } static void nbd_channel_error(BDRVNBDState *s, int ret) { if (ret =3D=3D -EIO) { - if (s->state =3D=3D NBD_CLIENT_CONNECTED) { + if (atomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED) { s->state =3D s->reconnect_delay ? NBD_CLIENT_CONNECTING_WAIT : NBD_CLIENT_CONNECTING_NOWAIT; } } else { - if (s->state =3D=3D NBD_CLIENT_CONNECTED) { + if (atomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED) { qio_channel_shutdown(s->ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); } s->state =3D NBD_CLIENT_QUIT; @@ -170,7 +177,7 @@ static void nbd_client_attach_aio_context(BlockDriverSt= ate *bs, * s->connection_co is either yielded from nbd_receive_reply or from * nbd_co_reconnect_loop() */ - if (s->state =3D=3D NBD_CLIENT_CONNECTED) { + if (atomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTED) { qio_channel_attach_aio_context(QIO_CHANNEL(s->ioc), new_context); } @@ -237,20 +244,20 @@ static void nbd_teardown_connection(BlockDriverState = *bs) static bool nbd_client_connecting(BDRVNBDState *s) { - return s->state =3D=3D NBD_CLIENT_CONNECTING_WAIT || - s->state =3D=3D NBD_CLIENT_CONNECTING_NOWAIT; + NBDClientState state =3D atomic_load_acquire(&s->state); + return state =3D=3D NBD_CLIENT_CONNECTING_WAIT || + state =3D=3D NBD_CLIENT_CONNECTING_NOWAIT; } static bool nbd_client_connecting_wait(BDRVNBDState *s) { - return s->state =3D=3D NBD_CLIENT_CONNECTING_WAIT; + return atomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WAI= T; } static coroutine_fn void nbd_reconnect_attempt(BDRVNBDState *s) { int ret; Error *local_err =3D NULL; - QIOChannelSocket *sioc; if (!nbd_client_connecting(s)) { return; @@ -283,21 +290,21 @@ static coroutine_fn void nbd_reconnect_attempt(BDRVNB= DState *s) /* Finalize previous connection if any */ if (s->ioc) { nbd_client_detach_aio_context(s->bs); + yank_unregister_function(s->yank_name, nbd_yank, s->bs); object_unref(OBJECT(s->sioc)); s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); s->ioc =3D NULL; } - sioc =3D nbd_establish_connection(s->saddr, &local_err); - if (!sioc) { + if (nbd_establish_connection(s->bs, s->saddr, &local_err) < 0) { ret =3D -ECONNREFUSED; goto out; } bdrv_dec_in_flight(s->bs); - ret =3D nbd_client_handshake(s->bs, sioc, &local_err); + ret =3D nbd_client_handshake(s->bs, &local_err); if (s->drained) { s->wait_drained_end =3D true; @@ -334,7 +341,7 @@ static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDS= tate *s) nbd_reconnect_attempt(s); while (nbd_client_connecting(s)) { - if (s->state =3D=3D NBD_CLIENT_CONNECTING_WAIT && + if (atomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_CONNECTING_WA= IT && qemu_clock_get_ns(QEMU_CLOCK_REALTIME) - start_time_ns > delay= _ns) { s->state =3D NBD_CLIENT_CONNECTING_NOWAIT; @@ -371,7 +378,7 @@ static coroutine_fn void nbd_connection_entry(void *opa= que) int ret =3D 0; Error *local_err =3D NULL; - while (s->state !=3D NBD_CLIENT_QUIT) { + while (atomic_load_acquire(&s->state) !=3D NBD_CLIENT_QUIT) { /* * The NBD client can only really be considered idle when it has * yielded from qio_channel_readv_all_eof(), waiting for data. Thi= s is @@ -386,7 +393,7 @@ static coroutine_fn void nbd_connection_entry(void *opa= que) nbd_co_reconnect_loop(s); } - if (s->state !=3D NBD_CLIENT_CONNECTED) { + if (atomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { continue; } @@ -441,6 +448,7 @@ static coroutine_fn void nbd_connection_entry(void *opa= que) s->connection_co =3D NULL; if (s->ioc) { nbd_client_detach_aio_context(s->bs); + yank_unregister_function(s->yank_name, nbd_yank, s->bs); object_unref(OBJECT(s->sioc)); s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); @@ -465,7 +473,7 @@ static int nbd_co_send_request(BlockDriverState *bs, qemu_co_queue_wait(&s->free_sema, &s->send_mutex); } - if (s->state !=3D NBD_CLIENT_CONNECTED) { + if (atomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { rc =3D -EIO; goto err; } @@ -492,7 +500,7 @@ static int nbd_co_send_request(BlockDriverState *bs, if (qiov) { qio_channel_set_cork(s->ioc, true); rc =3D nbd_send_request(s->ioc, request); - if (rc >=3D 0 && s->state =3D=3D NBD_CLIENT_CONNECTED) { + if (rc >=3D 0 && atomic_load_acquire(&s->state) =3D=3D NBD_CLIENT_= CONNECTED) { if (qio_channel_writev_all(s->ioc, qiov->iov, qiov->niov, NULL) < 0) { rc =3D -EIO; @@ -807,7 +815,7 @@ static coroutine_fn int nbd_co_do_receive_one_chunk( s->requests[i].receiving =3D true; qemu_coroutine_yield(); s->requests[i].receiving =3D false; - if (s->state !=3D NBD_CLIENT_CONNECTED) { + if (atomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { error_setg(errp, "Connection closed"); return -EIO; } @@ -966,7 +974,7 @@ static bool nbd_reply_chunk_iter_receive(BDRVNBDState *= s, NBDReply local_reply; NBDStructuredReplyChunk *chunk; Error *local_err =3D NULL; - if (s->state !=3D NBD_CLIENT_CONNECTED) { + if (atomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { error_setg(&local_err, "Connection closed"); nbd_iter_channel_error(iter, -EIO, &local_err); goto break_loop; @@ -991,7 +999,8 @@ static bool nbd_reply_chunk_iter_receive(BDRVNBDState *= s, } /* Do not execute the body of NBD_FOREACH_REPLY_CHUNK for simple reply= . */ - if (nbd_reply_is_simple(reply) || s->state !=3D NBD_CLIENT_CONNECTED) { + if (nbd_reply_is_simple(reply) || + atomic_load_acquire(&s->state) !=3D NBD_CLIENT_CONNECTED) { goto break_loop; } @@ -1423,6 +1432,15 @@ static int nbd_client_reopen_prepare(BDRVReopenState= *state, return 0; } +static void nbd_yank(void *opaque) +{ + BlockDriverState *bs =3D opaque; + BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; + + atomic_store_release(&s->state, NBD_CLIENT_QUIT); + qio_channel_shutdown(QIO_CHANNEL(s->sioc), QIO_CHANNEL_SHUTDOWN_BOTH, = NULL); +} + static void nbd_client_close(BlockDriverState *bs) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; @@ -1435,52 +1453,53 @@ static void nbd_client_close(BlockDriverState *bs) nbd_teardown_connection(bs); } -static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr, - Error **errp) +static int nbd_establish_connection(BlockDriverState *bs, + SocketAddress *saddr, + Error **errp) { ERRP_GUARD(); - QIOChannelSocket *sioc; + BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - sioc =3D qio_channel_socket_new(); - qio_channel_set_name(QIO_CHANNEL(sioc), "nbd-client"); + s->sioc =3D qio_channel_socket_new(); + qio_channel_set_name(QIO_CHANNEL(s->sioc), "nbd-client"); + yank_register_function(s->yank_name, nbd_yank, bs); - qio_channel_socket_connect_sync(sioc, saddr, errp); + qio_channel_socket_connect_sync(s->sioc, saddr, errp); if (*errp) { - object_unref(OBJECT(sioc)); - return NULL; + yank_unregister_function(s->yank_name, nbd_yank, bs); + object_unref(OBJECT(s->sioc)); + s->sioc =3D NULL; + return -1; } - qio_channel_set_delay(QIO_CHANNEL(sioc), false); + qio_channel_set_delay(QIO_CHANNEL(s->sioc), false); - return sioc; + return 0; } -/* nbd_client_handshake takes ownership on sioc. On failure it is unref'ed= . */ -static int nbd_client_handshake(BlockDriverState *bs, QIOChannelSocket *si= oc, - Error **errp) +/* nbd_client_handshake takes ownership on s->sioc. On failure it's unref'= ed. */ +static int nbd_client_handshake(BlockDriverState *bs, Error **errp) { BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; AioContext *aio_context =3D bdrv_get_aio_context(bs); int ret; trace_nbd_client_handshake(s->export); - - s->sioc =3D sioc; - - qio_channel_set_blocking(QIO_CHANNEL(sioc), false, NULL); - qio_channel_attach_aio_context(QIO_CHANNEL(sioc), aio_context); + qio_channel_set_blocking(QIO_CHANNEL(s->sioc), false, NULL); + qio_channel_attach_aio_context(QIO_CHANNEL(s->sioc), aio_context); s->info.request_sizes =3D true; s->info.structured_reply =3D true; s->info.base_allocation =3D true; s->info.x_dirty_bitmap =3D g_strdup(s->x_dirty_bitmap); s->info.name =3D g_strdup(s->export ?: ""); - ret =3D nbd_receive_negotiate(aio_context, QIO_CHANNEL(sioc), s->tlscr= eds, + ret =3D nbd_receive_negotiate(aio_context, QIO_CHANNEL(s->sioc), s->tl= screds, s->hostname, &s->ioc, &s->info, errp); g_free(s->info.x_dirty_bitmap); g_free(s->info.name); if (ret < 0) { - object_unref(OBJECT(sioc)); + yank_unregister_function(s->yank_name, nbd_yank, bs); + object_unref(OBJECT(s->sioc)); s->sioc =3D NULL; return ret; } @@ -1508,7 +1527,7 @@ static int nbd_client_handshake(BlockDriverState *bs,= QIOChannelSocket *sioc, } if (!s->ioc) { - s->ioc =3D QIO_CHANNEL(sioc); + s->ioc =3D QIO_CHANNEL(s->sioc); object_ref(OBJECT(s->ioc)); } @@ -1524,9 +1543,10 @@ static int nbd_client_handshake(BlockDriverState *bs= , QIOChannelSocket *sioc, { NBDRequest request =3D { .type =3D NBD_CMD_DISC }; - nbd_send_request(s->ioc ?: QIO_CHANNEL(sioc), &request); + nbd_send_request(s->ioc ?: QIO_CHANNEL(s->sioc), &request); - object_unref(OBJECT(sioc)); + yank_unregister_function(s->yank_name, nbd_yank, bs); + object_unref(OBJECT(s->sioc)); s->sioc =3D NULL; return ret; @@ -1918,7 +1938,6 @@ static int nbd_open(BlockDriverState *bs, QDict *opti= ons, int flags, { int ret; BDRVNBDState *s =3D (BDRVNBDState *)bs->opaque; - QIOChannelSocket *sioc; ret =3D nbd_process_options(bs, options, errp); if (ret < 0) { @@ -1929,17 +1948,28 @@ static int nbd_open(BlockDriverState *bs, QDict *op= tions, int flags, qemu_co_mutex_init(&s->send_mutex); qemu_co_queue_init(&s->free_sema); + s->yank_name =3D g_strconcat("blockdev:", bs->node_name, NULL); + yank_register_instance(s->yank_name, errp); + if (*errp) { + g_free(s->yank_name); + s->yank_name =3D NULL; + return -EEXIST; + } + /* * establish TCP connection, return error if it fails * TODO: Configurable retry-until-timeout behaviour. */ - sioc =3D nbd_establish_connection(s->saddr, errp); - if (!sioc) { + if (nbd_establish_connection(bs, s->saddr, errp) < 0) { + yank_unregister_instance(s->yank_name); + g_free(s->yank_name); + s->yank_name =3D NULL; return -ECONNREFUSED; } - ret =3D nbd_client_handshake(bs, sioc, errp); + ret =3D nbd_client_handshake(bs, errp); if (ret < 0) { + yank_unregister_instance(s->yank_name); nbd_clear_bdrvstate(s); return ret; } @@ -1997,6 +2027,7 @@ static void nbd_close(BlockDriverState *bs) BDRVNBDState *s =3D bs->opaque; nbd_client_close(bs); + yank_unregister_instance(s->yank_name); nbd_clear_bdrvstate(s); } -- 2.20.1 --Sig_/1wryZ4_W3PBLDliGgKetNGE Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGDkACgkQNasLKJxd slgqxA/+MomokdtmiaQ83V9dNJV4auLE+DJAvFU1c3ecVNXRLlJKmiriUTyXr17R nrCy69Qcu1AJDFPRpaOZjkdcdxV/kVshAktaxg8vOONxCIOapz3cXv0JNh41JAu9 i/Dy0gy7xmIyfMVfrekbOS8wQUDt4JMaZ4tyz11e7l27aCgewGYbzvMovm7hQOdg mC9GPSWjeTnYUZ4Ve/zAi/Co6funGHAAf/H/ZAw19r3ASOGylzgVl4jsIfhflqGa UP3lq+l43lGah5SK5KBcjtp3ZbMCe05mNRivAIe+jfqwXbUmzed9J5HbRsQTJufA b1SMehZof/y1AaIU03a1qYLLrn3H9j68JtlglTopyeM8hwyXbUP2hVIvNcTBhyrW w5r9Sy9Ch/IzVtJ0Fp4YrL6Vj8TX45Th9sysOYTlq0UMsBAo/NQD4imqdjMGXgT7 5bFodIYlBHYYRQQip1BKMPnxeZiujdfnh7MTqGpvVv1ciEzzxf4p/rodqsVsGoUy mLtlBIRxaq5e/9lZy04gjwN+qWcxcMgNTaHxQmdYaEkdGZTKHvu+VHt8ajlBdAnJ T1sWns+Vl/8XguhoRzrKXX2VKyEXKKTenLknAtOO+M/vxyNq1WBg3fGYIcY6O7cS JjUmWUN3EifpE5w/DcQnxoMkXpFTw85IqL4yiMmm3n/EUbsNkMs= =FVeg -----END PGP SIGNATURE----- --Sig_/1wryZ4_W3PBLDliGgKetNGE-- From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596528899; cv=none; d=zohomail.com; s=zohoarc; b=nHuKLjtgzv02t8J24IlBlr7c8MUPQb3ukO+XGz+WvblMZc6X7tGjat9c7J00igUH533npsC9GzyKlI24SCa8cWQbksFxYVWeiS2wLUF24h2SGZWVWFQLyC9yoTXlB2miR06/e3celitMQmzN8D/hlr8RknLX0tSzGri9gWQA1lY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596528899; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GCbkJDMH3PlNSp17SVXoKDtbL0b5CtT/PfB8heVkEf8=; b=Slq6zo9e2N5mG0im6Gps6Fousf4ifTXkb55Gt2hII/4TQUvRP0khqB5+FUbGoj7ClwEDk43lhDkXf34bloTsPY4lQo6Gal0sewq6kp1qJ30CkUNmL5yPLry1n4Qnmae/UN54Xh1NmZALQYjImOHVYox8QCN5c66EhyK/REQzF24= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596528898985210.6840960314937; Tue, 4 Aug 2020 01:14:58 -0700 (PDT) Received: from localhost ([::1]:44556 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2s65-0005Hz-KG for importer@patchew.org; Tue, 04 Aug 2020 04:14:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51154) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s34-0003YW-BO; Tue, 04 Aug 2020 04:11:50 -0400 Received: from mout.web.de ([212.227.15.3]:35801) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s32-0006aK-Em; Tue, 04 Aug 2020 04:11:50 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb004 [213.165.67.108]) with ESMTPSA (Nemesis) id 0M8c2V-1kyXEa1oP5-00wFv9; Tue, 04 Aug 2020 10:11:43 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528703; bh=xEDe+zbBuVAXvPtAdZvI/hRMlZMB5Q4vXtnHyT3/2s0=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=aPdMGOJjV2YRFitkCwx+7ezT2NuDWgWLi81v8tb2gAbARBOecdrmtHGK/fmyNdMSs MNz/joZXnob5jSduaI5P1L8J0DA+6hgis/k0Wx3uafgYFsN3WmUJxsK7oRaCuCog2c lTHLafgwLJzpIqeIxRkL0c83EjaXRNf9vCKwkPi0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:11:41 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 3/8] chardev/char-socket.c: Add yank feature Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/xnp2/WaHU++tiHJ9fKN=75S"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:dG4H8LrPxo9gvV0K3JWJERG1ay+jx4IKXQ5xJcPwD4lnE+fEnkX OmnkNoFSsd2pkrSw3xp9tPzISSW/oUAkshI1Akx5CojK+HW9FEFqrVS8unYB+p7OQIDU0Fm Kibf9Kc2CJ8bpBhqFZZDHC95mvhPR4OvMByQWcvjV6MQApTN3ChNuiBPC+ERrnsdBVP3R+4 ya2HssTgZ4OvD422lPlIQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:507kZDaXBb4=:lFH1F9/xToxkJzTRAPiZ67 rIYS0qRhIzgPcwU6Q35EXNZ6zqdV8fL11X0qV1Jl6JBqaaHxQM07Z6rfYK5nqKxciXd+r1OEz pL3I+VFoeSsivQvDLODEMPd2rGqVb2kAoE6tzAUqG5hzNA8xive5uPiylSRRiY69H6rqkepWP nd/7T+2JFRbIIy8PLuXfHpCKqBj0mRPC6VcHuVTTCchgjAZDgioKB7OJL9rDz5nhwB65uHkI0 iR8M950v2VWbGXwpcIsk9jSHleMQkCyX52+G4CoPWKthqBY2wdpIGp5X+1A6hWQVbWH8aFKEF dtqszk+y7BClCAwiZTe5zE2ZvCnH/Tqu80syrf8lkm7hcmt7++VrpLsuSO2boq+bbZz+vEqO0 Jde1m50hTZ1/qvyKnBf5aC1BxNd1ZeaZELSbGQ0o6czcE1MpkUKVlCKuNY6AcnYALWDhsN4Ec KLmGBLfEj0pNdDTnKcGnJGE/AvIO2sN9bigOnJl94qydtG2xp3YrJJbtZgaqlMFudHg6ILuzz M591oAHhn4oPvhkopCe8qgtgPbZbf4OWRwtNP8l/bmX/svXvITMTIZTRaoQAJa7Zb4+TF1ise SRXu4WkUVHS6/Ha3lHAFH/LSc92DlB/N/iut6BmCkre2lRftU3/ANX5YCogE8VXup8TazBlOB LsaXiemJ8Pri/j3GSEO0uP1WsBiJdZgIqvLkcdhlYrrKkTbsSTGDj9/lDssDXcfwD1mN8gxHR MNzeV6hW/mDhzchO7yN2wBqw0Gv1GCVdwEoGzdT5IBE1tsKhYSG/2ZGS88FmdJRbSrF0cFbBt hwID9Nft054XSWv6yRyBrg3MDKsVlEx6E7ekKGhncWHccIE41i+v93kff6HaCngGYChBKl+vC B6DYuMEOJIfMK208wuym4LZ+hsw6xYfJWRI+0JWkt9c+/1CKgvM26wBKSXGDRjv3j8wbjMtaK ycbjrIAOjTkQA1P0MT0oFl5q50ttY/RBxsv9vkcyO/hm0zybMXFrEfzcOKWB78vU8je7p6xlE b82N+h1pPovhqubxTWRkF1ESlyBaDF+j1MbJAvTbdczbtE+j7DMqncCgvCJCt8eYb1mtCTpIF 7EV5OjvPSIZQYUifQQj1ERbiaI+fWFGVAEg456m3ADXuqQvwJSBxFiuLA7WlgGquFpluctevv nZHasVNetuxM1Octtzg6fg5uwrbG8edKO0hAeEeotlbmycyJ0VgI5fvFXnPgs3ll4+DMPSVk1 to64bErWS1bKAz7dheOmkP3ezPCbjTw2OIsT0Zg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:11:39 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/xnp2/WaHU++tiHJ9fKN=75S Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Register a yank function to shutdown the socket on yank. Signed-off-by: Lukas Straub Acked-by: Stefan Hajnoczi Acked-by: Dr. David Alan Gilbert Reviewed-by: Daniel P. Berrang=C3=A9 --- chardev/char-socket.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/chardev/char-socket.c b/chardev/char-socket.c index ef62dbf3d7..8e2865ca83 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -34,6 +34,7 @@ #include "qapi/error.h" #include "qapi/clone-visitor.h" #include "qapi/qapi-visit-sockets.h" +#include "qemu/yank.h" #include "chardev/char-io.h" @@ -69,6 +70,7 @@ typedef struct { size_t read_msgfds_num; int *write_msgfds; size_t write_msgfds_num; + char *yank_name; SocketAddress *addr; bool is_listen; @@ -413,6 +415,11 @@ static void tcp_chr_free_connection(Chardev *chr) tcp_set_msgfds(chr, NULL, 0); remove_fd_in_watch(chr); + if (s->state =3D=3D TCP_CHARDEV_STATE_CONNECTING + || s->state =3D=3D TCP_CHARDEV_STATE_CONNECTED) { + yank_unregister_function(s->yank_name, yank_generic_iochannel, + QIO_CHANNEL(s->sioc)); + } object_unref(OBJECT(s->sioc)); s->sioc =3D NULL; object_unref(OBJECT(s->ioc)); @@ -916,6 +923,8 @@ static int tcp_chr_add_client(Chardev *chr, int fd) } tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); tcp_chr_set_client_ioc_name(chr, sioc); + yank_register_function(s->yank_name, yank_generic_iochannel, + QIO_CHANNEL(sioc)); ret =3D tcp_chr_new_client(chr, sioc); object_unref(OBJECT(sioc)); return ret; @@ -930,6 +939,8 @@ static void tcp_chr_accept(QIONetListener *listener, tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); tcp_chr_set_client_ioc_name(chr, cioc); + yank_register_function(s->yank_name, yank_generic_iochannel, + QIO_CHANNEL(cioc)); tcp_chr_new_client(chr, cioc); } @@ -945,6 +956,8 @@ static int tcp_chr_connect_client_sync(Chardev *chr, Er= ror **errp) object_unref(OBJECT(sioc)); return -1; } + yank_register_function(s->yank_name, yank_generic_iochannel, + QIO_CHANNEL(sioc)); tcp_chr_new_client(chr, sioc); object_unref(OBJECT(sioc)); return 0; @@ -960,6 +973,8 @@ static void tcp_chr_accept_server_sync(Chardev *chr) tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); sioc =3D qio_net_listener_wait_client(s->listener); tcp_chr_set_client_ioc_name(chr, sioc); + yank_register_function(s->yank_name, yank_generic_iochannel, + QIO_CHANNEL(sioc)); tcp_chr_new_client(chr, sioc); object_unref(OBJECT(sioc)); } @@ -1070,6 +1085,10 @@ static void char_socket_finalize(Object *obj) object_unref(OBJECT(s->tls_creds)); } g_free(s->tls_authz); + if (s->yank_name) { + yank_unregister_instance(s->yank_name); + g_free(s->yank_name); + } qemu_chr_be_event(chr, CHR_EVENT_CLOSED); } @@ -1085,6 +1104,8 @@ static void qemu_chr_socket_connected(QIOTask *task, = void *opaque) if (qio_task_propagate_error(task, &err)) { tcp_chr_change_state(s, TCP_CHARDEV_STATE_DISCONNECTED); + yank_unregister_function(s->yank_name, yank_generic_iochannel, + QIO_CHANNEL(sioc)); check_report_connect_error(chr, err); goto cleanup; } @@ -1118,6 +1139,8 @@ static void tcp_chr_connect_client_async(Chardev *chr) tcp_chr_change_state(s, TCP_CHARDEV_STATE_CONNECTING); sioc =3D qio_channel_socket_new(); tcp_chr_set_client_ioc_name(chr, sioc); + yank_register_function(s->yank_name, yank_generic_iochannel, + QIO_CHANNEL(sioc)); /* * Normally code would use the qio_channel_socket_connect_async * method which uses a QIOTask + qio_task_set_error internally @@ -1360,6 +1383,14 @@ static void qmp_chardev_open_socket(Chardev *chr, qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_FD_PASS); } + s->yank_name =3D g_strconcat("chardev:", chr->label, NULL); + yank_register_instance(s->yank_name, errp); + if (*errp) { + g_free(s->yank_name); + s->yank_name =3D NULL; + return; + } + /* be isn't opened until we get a connection */ *be_opened =3D false; -- 2.20.1 --Sig_/xnp2/WaHU++tiHJ9fKN=75S Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGD0ACgkQNasLKJxd slgUtw/+NAYhDxh+VC2yclYFd2xPyH6AyjWjtq7ijG3mABZjBWh6yGC1IrhIZRYj Z+G4HTAZimlTC/bJiso5oC6e8pMNELJPQ1RIhQU6wQsgtzNi4m93TVC/+xPKyaaS 3kG6wCjfPlDvyipn4/DNq294/dEFnKqb52+tWsysESCRk+OyvXShUN3Xho2PX8ad 9olVxL8oyDoqHxiWOAAWlmGZ2v3tuQGfOTHWViE99I7CgOwoBVJes0thNJVALd/T 9ejtqSlHfJwX3nlCxG88gNGGal3gZh3xtUTxhV1AgPvzYwiQu98kkjOoG/61x56q 4YUxJQGk5vBVvR+VX+Q3Mxjh5jGvykpxCCYPjznZN1iit4GLjF25EyNEk9VbU6yR 7FB1rQiQf4s13EyfxvBMncyyYb+muvjKgYNWCUGR7gNeJA5u9c3RgcSfAoKi6wJX bqoOWoGOAd8hEZpukEb/Czl9C+CsU/Vj2WaBRXOwqwTimsT1Jfj9gf1fHQ3y/pwU DomKSoopNKOgdeKB/CQ7KkGt/w2HW6f8aDm+ne0XJBdBKPctM12DAxzo8KYXgxW8 j6o+BJW6YsHHB5B3yNYOP4bCuMmcwStXW/V+4tBzW3/lKmSlFEiL+Sqc5fqKVQSN zTQEZPLn7N2obWXHpW8b6lIcL5Es3/gl98bH97X1gI5j70hWIXQ= =+Myq -----END PGP SIGNATURE----- --Sig_/xnp2/WaHU++tiHJ9fKN=75S-- From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596529260; cv=none; d=zohomail.com; s=zohoarc; b=NNv4pxZBHIBEsgWXbWKSM/f9joKMxTK72TFPsSi5KDaAHi/XIKfTCcp2Hgh2sJf2hpFMhRnTo2QlIFr3X4i1eOeKvl6DuzHjo9gHgHd0rfPu+3UgvDnba3LyaqGCtqFrwL6yTnj0HN736PyATqZY8mn/vAp6mPqZweTAwWBmS5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596529260; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=I97Htjnfj/32jEh/c/dlczposplgU4JVU+AoBr7dZYQ=; b=Nvl5M5i2jl1jBTBCrP6E5xSvPVdfwkEIn80uxugmWPp+sIGfB28EgYt99K2kNXDmuaafRFdYgLMbxBaHb1T+By5dF554ulp/gxWoWpyV8uo2rc21xitgBowBNUtT9R3DbAAzc6U5ueFXbwmpQOPEgKyjvzCF8rmIp4nfB1ENy4k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596529260422828.2745468512212; Tue, 4 Aug 2020 01:21:00 -0700 (PDT) Received: from localhost ([::1]:53100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2sBu-0000XI-RD for importer@patchew.org; Tue, 04 Aug 2020 04:20:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51168) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s39-0003cr-Av; Tue, 04 Aug 2020 04:11:55 -0400 Received: from mout.web.de ([217.72.192.78]:34627) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s37-0006bJ-3B; Tue, 04 Aug 2020 04:11:55 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MXYeQ-1kHoPd20la-00WWUf; Tue, 04 Aug 2020 10:11:47 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528707; bh=7L3s5EjxRt+eOZ78W6TKKUDcFvSCE8Nn+E6n9Q/Tngo=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=fuTnhldlgBMm7KK9cofO2APIkNLcRFKwXo4veLbJYMLLo6tEF84Xd/NjydXih/ry6 kH+zgXHPYSOMIAUxKr64x/F3MhqC3EaqbJgc8PPV1I5ZMV8anRxfAIxQIquDABXhgC k3XijOrN8+bz7kt+jEn10nBeowzzrlQJ4xgg9ddo= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:11:45 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 4/8] migration: Add yank feature Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/dpStp/=BCwa43iQtYQAAHKK"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:A8ccW7cWdEW21ryWus8rORgRX/xmxI5cdCqcVHk/zds0i5oiNMi EyXFmykss08vN2LqKoQU/CDburAd2bZoaSbVGUKCUbHg6ha04pGaRoS1wEFiSGNoQjjRqJN cK/FDABsL4trrDUW47o6f8Qee8QReec0vG1Q5y7ODbQax+/5vmv95KHkPNd/i3sVc41fUU6 MxbxsD2OV/5wH/uNF6N4Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:IG8sV5X4tRI=:x8jcojFtI/Wt2OvrfXe3Em AqvbQ2K5E8MVF3W8Z2tNir06WgtgcQIMSYxXMIQYLGlchaaXqM2aWXa8jsj3JzXIlvX74A2Nl rOhpSGzCCCO+XzAF5oCU9oTuLMMtIr95PIHgllADnXQAOfG/QGtdeZc8SxbCGALngCYVkc7SN wcy8f0onPyC0YI7rH828qkbNsR/2lN5f5h4nInX6R+oqahYZX+TJKXjELK1XRTLBSVUO9/uwl Jec+mwd+kiYVx4/fd7M4gNE4rp0vLohlMz7jD1vdJpqLKDr7WF4rZuRvRew/3DcNodBZCTfxL ews6Q6F9NmgxSrtcsiGkeuSLVUHnbDpllzsQxKf+xuX7liXP5vxCRD/nZ7IV3dCSNPksHqSNh fn+JLZU8qLCHGqXjmjKugpZvgKu5SzK8fDtGpiXyQdzx11HnSbwC89vgyyeAS/tmuMEoyBcq8 pDHlDQoM/yrqlVYyXmME5+eWvM7xyX9Z0qMkcNIgtZSNQu2Toh4shX8nuQ3jWXb4pgCYjycxU MgQlt56MjTi9vshAXrwHEiqIDE5+AMc5uyh8BV5HzDJWgNNS/8w/bxD8ShtY69RUMFBn//xbq t+vSrAvFZq87lXl29nT0o7I1m46saYVI51bSrsfteJXoOqYpE6RJEiIQsXXgn9Pir5JoGNWdj Cb+Gwpwkt3vAdspRi+B0KTkGVk6niL9A+lcVP9ycnFG72Xxi6yAAPZGYbcGZIDiUfZ02lzFAT LT7oHs/NPggtjboNcu2FIz4avFyhEUlyK092D9o/e5zl99YDDd+BJEdiYG3t4QFdqrZM83t7r HOVjBO+F+2l+/8i1XNzlvqHPI4/uv1ahtQEeOFvT8fWxKVn5pJ/BobxEajq4OGSAXFIcic3lA X1ucVE21PazSmtsXJC6tGAy1M1v4AvJ0vJye8+iXNb/YAbppZ02IVeMtcO1TQzjDai4tksXt4 Om3jZ5e+drwKH0uAljX78U1Tf9L+T+bebF4q1jee+UC0zVfNRi6/YgTVnxEm4j8Z8ZlXMGHnd OvW2TmmiBaLi4s/4ZDOa9ATD/ZfPsJRJvgB8UpCyZSWllk0/OdZNjPkg7+iIS6u1ckc+ViJKU r7A1cTg2EKK/SHNrNkntjXrPk9GGfr4JgxQrAEIz5HFFJtkti9ZzNDZAtVwA7LN6IiD9A2eHI cA5g4mkDfmE+3rNvlILn8ArozZ1Fa6bvgNKws+zw9ZFkLAX/E9pl1HymRNimVr16APeBhPku0 gh9H3GDQK9zAZp5QDNK2MthYUBotZJ9yfVzq6Dg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:11:51 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/dpStp/=BCwa43iQtYQAAHKK Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Register yank functions on sockets to shut them down. Signed-off-by: Lukas Straub Acked-by: Stefan Hajnoczi Acked-by: Dr. David Alan Gilbert Reviewed-by: Daniel P. Berrang=C3=A9 --- migration/channel.c | 12 ++++++++++++ migration/migration.c | 25 ++++++++++++++++++++++++- migration/multifd.c | 10 ++++++++++ migration/qemu-file-channel.c | 6 ++++++ migration/savevm.c | 6 ++++++ tests/Makefile.include | 2 +- 6 files changed, 59 insertions(+), 2 deletions(-) diff --git a/migration/channel.c b/migration/channel.c index 20e4c8e2dc..21fc8046b9 100644 --- a/migration/channel.c +++ b/migration/channel.c @@ -18,6 +18,8 @@ #include "trace.h" #include "qapi/error.h" #include "io/channel-tls.h" +#include "io/channel-socket.h" +#include "qemu/yank.h" /** * @migration_channel_process_incoming - Create new incoming migration cha= nnel @@ -35,6 +37,11 @@ void migration_channel_process_incoming(QIOChannel *ioc) trace_migration_set_incoming_channel( ioc, object_get_typename(OBJECT(ioc))); + if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET)) { + yank_register_function("migration", yank_generic_iochannel, + QIO_CHANNEL(ioc)); + } + if (s->parameters.tls_creds && *s->parameters.tls_creds && !object_dynamic_cast(OBJECT(ioc), @@ -67,6 +74,11 @@ void migration_channel_connect(MigrationState *s, ioc, object_get_typename(OBJECT(ioc)), hostname, error); if (!error) { + if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET)) { + yank_register_function("migration", yank_generic_iochannel, + QIO_CHANNEL(ioc)); + } + if (s->parameters.tls_creds && *s->parameters.tls_creds && !object_dynamic_cast(OBJECT(ioc), diff --git a/migration/migration.c b/migration/migration.c index 8fe36339db..e4818edb2a 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -55,6 +55,7 @@ #include "net/announce.h" #include "qemu/queue.h" #include "multifd.h" +#include "qemu/yank.h" #define MAX_THROTTLE (32 << 20) /* Migration transfer speed throttli= ng */ @@ -243,6 +244,8 @@ void migration_incoming_state_destroy(void) qapi_free_SocketAddressList(mis->socket_address_list); mis->socket_address_list =3D NULL; } + + yank_unregister_instance("migration"); } static void migrate_generate_event(int new_state) @@ -379,8 +382,14 @@ void qemu_start_incoming_migration(const char *uri, Er= ror **errp) { const char *p; + yank_register_instance("migration", errp); + if (*errp) { + return; + } + qapi_event_send_migration(MIGRATION_STATUS_SETUP); if (!strcmp(uri, "defer")) { + yank_unregister_instance("migration"); deferred_incoming_migration(errp); } else if (strstart(uri, "tcp:", &p)) { tcp_start_incoming_migration(p, errp); @@ -395,6 +404,7 @@ void qemu_start_incoming_migration(const char *uri, Err= or **errp) } else if (strstart(uri, "fd:", &p)) { fd_start_incoming_migration(p, errp); } else { + yank_unregister_instance("migration"); error_setg(errp, "unknown migration protocol: %s", uri); } } @@ -1662,6 +1672,7 @@ static void migrate_fd_cleanup(MigrationState *s) } notifier_list_notify(&migration_state_notifiers, s); block_cleanup_parameters(s); + yank_unregister_instance("migration"); } static void migrate_fd_cleanup_schedule(MigrationState *s) @@ -1935,6 +1946,7 @@ void qmp_migrate_recover(const char *uri, Error **err= p) * only re-setup the migration stream and poke existing migration * to continue using that newly established channel. */ + yank_unregister_instance("migration"); qemu_start_incoming_migration(uri, errp); } @@ -2071,7 +2083,12 @@ void qmp_migrate(const char *uri, bool has_blk, bool= blk, /* Error detected, put into errp */ return; } - + if (!(has_resume && resume)) { + yank_register_instance("migration", errp); + if (*errp) { + return; + } + } if (strstart(uri, "tcp:", &p)) { tcp_start_outgoing_migration(s, p, &local_err); #ifdef CONFIG_RDMA @@ -2085,6 +2102,9 @@ void qmp_migrate(const char *uri, bool has_blk, bool = blk, } else if (strstart(uri, "fd:", &p)) { fd_start_outgoing_migration(s, p, &local_err); } else { + if (!(has_resume && resume)) { + yank_unregister_instance("migration"); + } error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "uri", "a valid migration protocol"); migrate_set_state(&s->state, MIGRATION_STATUS_SETUP, @@ -2094,6 +2114,9 @@ void qmp_migrate(const char *uri, bool has_blk, bool = blk, } if (local_err) { + if (!(has_resume && resume)) { + yank_unregister_instance("migration"); + } migrate_fd_error(s, local_err); error_propagate(errp, local_err); return; diff --git a/migration/multifd.c b/migration/multifd.c index d0441202aa..2c9863e770 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -24,6 +24,9 @@ #include "trace.h" #include "multifd.h" +#include "qemu/yank.h" +#include "io/channel-socket.h" + /* Multiple fd's */ #define MULTIFD_MAGIC 0x11223344U @@ -866,6 +869,13 @@ int multifd_load_cleanup(Error **errp) for (i =3D 0; i < migrate_multifd_channels(); i++) { MultiFDRecvParams *p =3D &multifd_recv_state->params[i]; + if (object_dynamic_cast(OBJECT(p->c), TYPE_QIO_CHANNEL_SOCKET) + && OBJECT(p->c)->ref =3D=3D 1) { + yank_unregister_function("migration", + yank_generic_iochannel, + QIO_CHANNEL(p->c)); + } + object_unref(OBJECT(p->c)); p->c =3D NULL; qemu_mutex_destroy(&p->mutex); diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c index d2ce32f4b9..d8f8384fea 100644 --- a/migration/qemu-file-channel.c +++ b/migration/qemu-file-channel.c @@ -27,6 +27,7 @@ #include "qemu-file.h" #include "io/channel-socket.h" #include "qemu/iov.h" +#include "qemu/yank.h" static ssize_t channel_writev_buffer(void *opaque, @@ -104,6 +105,11 @@ static int channel_close(void *opaque, Error **errp) int ret; QIOChannel *ioc =3D QIO_CHANNEL(opaque); ret =3D qio_channel_close(ioc, errp); + if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET) + && OBJECT(ioc)->ref =3D=3D 1) { + yank_unregister_function("migration", yank_generic_iochannel, + QIO_CHANNEL(ioc)); + } object_unref(OBJECT(ioc)); return ret; } diff --git a/migration/savevm.c b/migration/savevm.c index a843d202b5..395b8fa704 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -63,6 +63,7 @@ #include "migration/colo.h" #include "qemu/bitmap.h" #include "net/announce.h" +#include "qemu/yank.h" const unsigned int postcopy_ram_discard_version =3D 0; @@ -2935,6 +2936,11 @@ int load_snapshot(const char *name, Error **errp) qemu_system_reset(SHUTDOWN_CAUSE_NONE); mis->from_src_file =3D f; + yank_register_instance("migration", errp); + if (*errp) { + ret =3D -EINVAL; + goto err_drain; + } aio_context_acquire(aio_context); ret =3D qemu_loadvm_state(f); migration_incoming_state_destroy(); diff --git a/tests/Makefile.include b/tests/Makefile.include index c7e4646ded..e733918269 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -452,7 +452,7 @@ tests/test-qdev-global-props$(EXESUF): tests/test-qdev-= global-props.o \ $(test-qapi-obj-y) tests/test-vmstate$(EXESUF): tests/test-vmstate.o \ migration/vmstate.o migration/vmstate-types.o migration/qemu-file.o \ - migration/qemu-file-channel.o migration/qjson.o \ + migration/qemu-file-channel.o migration/qjson.o util/yank.o \ $(test-io-obj-y) tests/test-timed-average$(EXESUF): tests/test-timed-average.o $(test-util-= obj-y) tests/test-base64$(EXESUF): tests/test-base64.o $(test-util-obj-y) -- 2.20.1 --Sig_/dpStp/=BCwa43iQtYQAAHKK Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGEEACgkQNasLKJxd sljoCw/+MhwYxnlCF+krNrhHwy7B0+Rf9Fu87PPCQifGWzdFL4TpeBhcaBKnT8JW OxHN2GgN1y6e/sToFiu+Hu6ilxT8JXKDWydCRy6UyXF8rOxcl9wjTL2eajsxJWqp Iu1f7s3kALkjxvcA17muJ+dYqLyEnNjoKOsxTt+aHIK1iB/b4d74Jow+NQlub1Ny Dn8sZMxnQ1mIekAuXCi1KiL/fHGzECmfCxXWox2H3dxrJRJgx3HLXRMSwLL3SJ9k q8mSDYlaqhrej8hAi8lpXotIv1uRLVfB2nq/TUtF1ImQNlaNwzL+XlkO3mot8qXx PyhYX4yqs2edeacgX1eSLu53jsOt6pserZpxuDpcC8+PurbeHP3YatsvUSvk4lpL M8iJpezJwjNV9YgWhHtRxwkZOrErbjLTFJCAjlp3uGwL91iDrPF/FkWBtxYUBCpj KNwxiSVt2s9LPrtsa7/zW4yNTQcDesm9v5oM9q/QvEflkgOgy5hjRaXquQdljHaU IsPR5ItLryLetAltXXz39K/sOtr6QxLH08N+bJmFLeumMMLxZ6cgKgbOW+BFkr6R rZiB3/F2sBamYTygEKxrc1VB520W3Rj8pFHVPdtvgbUGUK4ePdoDbyRYTKYPK3bF dOwNrShY1/lcSCXtAp84gvREVbSvRBqm3rIqXXD27wDNPUUg8lg= =LFe2 -----END PGP SIGNATURE----- --Sig_/dpStp/=BCwa43iQtYQAAHKK-- From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596528966; cv=none; d=zohomail.com; s=zohoarc; b=cxNeKLSQAfBoudWfzlsAdA2n5vXXee6HbwsuQ5ZiyBuBsHMFMLRhbszkw04coZKdwdJSKIoIsTp4g98ziYk8wx5Q9YBZLnFg1iIU1hRwxv1Fg2H6u5GJxOzIgAIxwjy1Cp+3e8FoQT58mQUmxzOr++uaZjn5EYJudCr/uAmec7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596528966; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RIY7RDMQzuSW0PeqpU0/RVyTmZF4s8wa2pHGPcS5Hns=; b=B4PiCfEAjD+ny/DfVdrpJ2C9ESqoTpldLoARvLWHrPljp3Wp1c1XNZbE1/jpqgxlFBdb6TeJPHswzNPtViJdEUDNirrZm4awiUu9e8gHZz2kHk0Df+0MW4xNn4BTc8effm3fPMnYuNLijRRbO8JBVdpsk9AmxBL6xiXZD7uuFOk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596528966358147.63737490636436; Tue, 4 Aug 2020 01:16:06 -0700 (PDT) Received: from localhost ([::1]:46280 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2s7B-000615-03 for importer@patchew.org; Tue, 04 Aug 2020 04:16:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51194) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3C-0003ff-7k; Tue, 04 Aug 2020 04:11:58 -0400 Received: from mout.web.de ([212.227.15.14]:57289) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3A-0006bY-CT; Tue, 04 Aug 2020 04:11:57 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb001 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MeBVG-1kOMum2zMc-00Ptq5; Tue, 04 Aug 2020 10:11:50 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528711; bh=bSWjpbZspePlZ8BZSSi8m7220at3pdOLN8eqbLiQZjc=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=lMnaxeRtZMcN4k+f97ZauF6e5EK97IzOck4+TEHjwSKNV1Wdy+JEaTNni51vzT7Bb 6UyomwDzfBMzBqcFMUdtw9SO6t+63NoDR3LGXdrRVF4/ZZ0io5gUFaVa4n46dJJGUf Nm7uf1bQGZRPZujIjQ8jSv4Sjb763U7gw37Btgj0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:11:49 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 5/8] io/channel-tls.c: make qio_channel_tls_shutdown thread-safe Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/6L8wL6ee/s.fuFafRuvIaIp"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:pJpYlpelk/Vm8ALqpszS5baQJuC3IPf6uDNhx3t3cZ9u+2r7NFx zMEffUQjWoiSlCq4qzRt9KVvJaq4CMiVZCM86/oaoEDtksK7kH2k74cAU29+CCEfkjEIV0H 6DC/Bp+CfyXL9LIj/pHwgB5epRAlBmkalRqFWxYXixIGBmiL4AS+PCX3MhHiHnS7pC/1Mr6 KwzgCGQXFxjyENOPnQtig== X-UI-Out-Filterresults: notjunk:1;V03:K0:sEma/SQcmFQ=:wo767FoEFaCsXz+hfsESw0 qWUrRSk5cYm6l+6NNV+9tLiiFcGR/P7V554MvyD+C9GAVcFIvcYIDPzRlyGF3i+qxI24MBQRD yfVL1Yj5yfVLZW+hM7KBTNjq2fGtb/q7wjWHbhH/DOKDjiBIvHNL8VPQFBdNPm5lTlIGFZwZI tNVhhRUYl1qU2sNCpUTCno0rzB1mdiAdaz2+NYGpfh+phY8SzD5V9VSkwO2J/xhhG6XbliEp9 CLh4PjoHo+EXvxTpn4Wimjky9AS3eePIwgN+v4lcDd0gu3MqTRJMAfAFmLpT2ksKSRwa/whrn TbJkCXCNO0WSHRXA/CCqhgiqFtdUPdUyCWGLJgMzUWMlvvcmd2cx1htY4PIsfDRg6QIWrFsCH +fUJg0uqViOM+mXBhXE5mwWosMMlPSfRQ3SlE5DnxBR/TkVviGTM81VKZWu3Ac0h+4IFMNZUS WczB7jCbOmyGDrLtVOdIkdtmKDBHCJpQ3It7DbnBr6YkgB5RV/SlV3eEdYO1CdfCHQ48o8iSB xMg6PlmXCKfZI+8DdXaR8VYSYmdkLIf6/YOYlTXwfj9jQPs7ExVdsRvaYPTxlQKQ6rlz6FKCf lFVvIu2cQmwmJ0lKYEMu+ctb2O0HEOKqgXQm8/J0eJm2cRE0pgG4v9CREyGx5pmzLH9EDyXEa LEavFB3t9HAU4o5nz6L/KcNE4rzV1bpkKvgxf6zHepL+/ofBRwttNg+Pzk9kvhvd/lj5vfSyG I91TWv4vhpYPRege+sLfGWi5wW2oPnXx0FLeHr9g5EzFM4veoGZnNkNRt8J8b8nTqujg+TZRR WmDqG8/XXJ8HHDJj8c1v0eDC5QPqp+MORnk4K+6tv9NaejD0fmg7WIvHtHedD0/FU5WeSY10D +eQaiyzrnc52O5CMIsl8WFZeMVn0asOTG/G1UZvu83FJaUMeu7yZpLE+G80K17AlmAEMtpbib mtQMGVl9h8lJlQKU5vGLXlRAFPI2cyzhGekmZJ1Lb5Y5jTGegHX8QcVOqjWCXOLyOeo19eeJi kiMGBX/Wj7snSqdaqrBKPKxiu7jujxdA6y6JXt+FVjSwGcN1QBNNZGNpQnTSqo07Cjqd6CsLp vdFEzM5XA2xgaFwhUzEhNg3wRVjkkXwHfulWwAqtmYJ+n1YG1hM8rlRN/lWnr4p9nxn94V0yY Yf4ixrcXdXsksqMBzDsGF50D6Rw48Rmxm4ChQ3jlhpl7PaJpWw2e9bQPasvf1Py/omjvaw2Mn LlvllSf6ObJd4WRcYUHMHcvAeRRPeMRWCoWoifw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.14; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:11:54 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/6L8wL6ee/s.fuFafRuvIaIp Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Make qio_channel_tls_shutdown thread-safe by using atomics when accessing tioc->shutdown. Signed-off-by: Lukas Straub Reviewed-by: Daniel P. Berrang=C3=A9 Acked-by: Stefan Hajnoczi Acked-by: Dr. David Alan Gilbert --- io/channel-tls.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/io/channel-tls.c b/io/channel-tls.c index 7ec8ceff2f..b350c84640 100644 --- a/io/channel-tls.c +++ b/io/channel-tls.c @@ -23,6 +23,7 @@ #include "qemu/module.h" #include "io/channel-tls.h" #include "trace.h" +#include "qemu/atomic.h" static ssize_t qio_channel_tls_write_handler(const char *buf, @@ -277,7 +278,8 @@ static ssize_t qio_channel_tls_readv(QIOChannel *ioc, return QIO_CHANNEL_ERR_BLOCK; } } else if (errno =3D=3D ECONNABORTED && - (tioc->shutdown & QIO_CHANNEL_SHUTDOWN_READ)) { + (atomic_load_acquire(&tioc->shutdown) & + QIO_CHANNEL_SHUTDOWN_READ)) { return 0; } @@ -361,7 +363,7 @@ static int qio_channel_tls_shutdown(QIOChannel *ioc, { QIOChannelTLS *tioc =3D QIO_CHANNEL_TLS(ioc); - tioc->shutdown |=3D how; + atomic_or(&tioc->shutdown, how); return qio_channel_shutdown(tioc->master, how, errp); } -- 2.20.1 --Sig_/6L8wL6ee/s.fuFafRuvIaIp Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGEUACgkQNasLKJxd sliwTQ/8CK125KBG2JH4fy/YQ7of0HzCzB8C1r+CUBtCfXBqGYmehqpV8g9yWXYo uAEwtvp46gLjAeYxU2WM46UF5I7PrZZ4Ttbh+y31+Z33GeOENUEO1Au+ZXQXMC6i Qya4aD/8xnK68P7mkymen+IutWPUUZZzKoOzz4/fDBKw9Ee2gdNImd5e4q0ac25A JOqyacnE1tzpJlH/5ZOxV6SUu/rcmhuocYeFQAtVHUQwvhQ2GYz6AqG4R4z2Wg2D /dT1bt/YuQkEWUtsFHNeD4p3SBB+OhpCNb2Z/4SDY50Fssfo7jJxeGUdlrYYtZ8Z h/Rt84maTeZA6UV2OhuuQW5tzITrUF1LLmOH12za83suw46aSLDEsjHcn8tSV0rz w40dcwFtyB1k6pahirNQkFMZC/R3adWxATRcn/IMMZIk0hncuuXvzUugAm2cAhQo +siGzGZj/umdvXllNRbncIu17yPZlcBYSIndHSGS820zgOv2iIISp4oW1ZhZOw+L xX2ClPfOo0XA3vaGW35GP3LmuhDkAkPrTKwE6vQ2ln2ClYaxjgdZpyoXlx2aBQoJ OVby4vwMxOFaMwvc/URs5Bm1CvLnVHgt3b7eitb8vfRQO2bKi6kg9FAxxWm6mIu/ H3AW2GDnOAyPgAd/OFEV9ymEzTmyRrwlyp8xEiU2vcec8aj/kMI= =Fzsv -----END PGP SIGNATURE----- --Sig_/6L8wL6ee/s.fuFafRuvIaIp-- From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596529302; cv=none; d=zohomail.com; s=zohoarc; b=ElHdmd+2kA145Es0Y2IB4k3yXCYb6BIuaX9l821YpvL7Q32ioTave8+f7VAH/WP6MC3OrDRn8kgjR2HdpwaN5liGvtUte2iAirRapZd4CKwyg8vTCyv1crkCIR+s2Rip2i6eivvg5Y49dMVL/X1JwFhus6pPrM4ZUxBpiqV7lKU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596529302; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Taw7ECZPkLFJggBrcIcYx/UKS8qJnUapqe6HcqORDPg=; b=U7YRS4JaeYA6noTS3JqWlMMgdFtGmR9xXslY8iVot9lF03lW/VsgwPxMFdTAv8k3LDk+W1Tse6Il/8+N2ZJpbIeEQe3tRnPHEoJkd2tccUPAMVpKpaHWKt2blz1WBDZlw3WaD7Y3MmTZU9u0+JWSbbJQCR9uBVJsbqXho5Js7JA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596529302401243.86476550873704; Tue, 4 Aug 2020 01:21:42 -0700 (PDT) Received: from localhost ([::1]:54066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2sCa-00012V-Vb for importer@patchew.org; Tue, 04 Aug 2020 04:21:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51206) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3G-0003j9-3P; Tue, 04 Aug 2020 04:12:02 -0400 Received: from mout.web.de ([212.227.17.11]:45101) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3E-0006cB-E3; Tue, 04 Aug 2020 04:12:01 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0Lk8gg-1kaYAi2DxS-00cBEU; Tue, 04 Aug 2020 10:11:54 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528714; bh=GDIipmN+9j6zL/53PXYOAbRC04vVOsa/k8/m4RzVmUM=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=ZptSlHCnrSJ34uVU9C73l1g1omWy96JjwT96kEBzPGgqmlaRQKjcfVeu35LEjZZOb kHn34lJy+zyVngEWnbM0xTc4r3+5UFaoxkFvSrN9IdKs4OrO9alvtgAjVENCVVpIw1 aUIOfCHOjkEhYcScTTrvcGVp4qlNm0dTPCGCy8vw= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:11:53 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 6/8] io: Document thread-safety of qio_channel_shutdown Message-ID: <5d49ec9f44d508ad675fdaed8154f0d80cd48739.1596528468.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/Y=5oQrS4z4fRE8IkMaKUsMr"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:BWYySGjNEtMmGTy2mJ9CkFtiKzhXOwvmFU4v3MWGzaP5W5NXqFU F86ltWVskJykPp1xHCLacNSVI5EbALSdMebq0jah8VdhTKUaFPlBPU2GkoScY1IqiTpU1HT tFBrj6DTtW2kMuLzdQI6Iq9zujbHLn2BgxfFeals8yT52oi4zSpWuEas17+iQciGU1Wklz5 J7JvV8Ht4y7fn4JJa4irQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:jYgKe4YoMec=:BR/c4zXDx1jZnVHo0A+XJ6 99eIWsB38DtxmW+ikNaXiJ6ebm+T9dLBcg4PdB7Txuxqv65D2Wk5vC2KjqO4v1APPNSEL9fTq f8MyXYeli3l9UvuRQj8uGpGImr7NjTzkwKv6ZkozfSfWNyMXHHkh8ynUBAdXkI8kZoETuzYOV 7blbFHfItFkikPcQhpEYuH1mbh4dZM1CHmAttwCx3pkFXBm1V52kZlOVE/C0eKzzJEDKt8xcW gD6xwiRXgr4QOQk7WU3xDLCOVdzvrMPGzWeOhc1N28FnWxAyiF2rQpHU90ZBRN6Y3e2P1f71N lwUW/t9v/2fdVmnvO/oVjvQgeYJkuXoIuhT2kMHZAuBwgkgG6AwM1skz/ZBJgbs75AXb6hOZn L/fDUI6QMffH2WqBI9gQF9A5Gpas2K71+mZdlV4wMbh6HCmLJoiuXzS316rZbFNZO0G40Betb EovH8sO+QpRoHpF2mFf030DKZMV+WWcz0xjRMIRXRyzG+2WMX0CJxiCwO3zF0+N10e1tWpyiP Ja3CzIvJyIyNk3CU54nUZ15Y2vSxWO7fsGSz0tioz+e/csEPKnmTWr+T1asLB67iQeKPl9ffx pnMZYdvFqG517Nbv1wFM+twM6pKuZguq5q6k8QQ6bYhTeDrd5ww6TzoDudqeUG1BXhGn+nlKe X5Ic+jABM8iyBoZoLsC4LVot7H28aQT1PhGHx3QwCdQGLrSnLIPCirLanwTca/o1YRvpkXjB2 j7AZYzSykiMjLXFHGn9ZlQiya0YK2ubwOdNYpkWSDdry59B3TwUTDsgOpkDCA4JFo5uvj/wW8 NlI18OzdgrqLscs8s2v2tr24chiaprP0Mrsxv/IYoockZUqcwelIHg9lDhxot9cnu3+d9vLBm 08wVpu1g7BCgX+WjKgMXIUN5IvqDfsYDFiUQctMQEm465p/G/aTHaI1HABCuhoX8f5lgeWVCb WQDLPdQPGMVbAOb6A5QN0GjXV34+a3bkl77RNkkgvhEa6dLUBV+BK6RbwCPesHrYSBdQd5vFB D69JmjVGMp2RbFaJlUfL5F1qJnl3Ben3Rt8hHaxZNuO47hr8yLk8BBn2O05ghcaB5OlRNC+VA oCuKXEF8AyTPjsmaxcAwDB65mvHtBr4+6fdnXg5fXXc+4R2wdDrtySLgtKYQb5NJ2u5ch/h08 eH9V30vWBwfnYsSveVd44YuzLQRceAkHksBl+5qTeKQZR7m0J/uxOGa8WvYVMBIXA8JN1zszZ KAk4uLfBCx5TouvVmjW4Xgx7H0lAeUnknvHpIhg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:11:34 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/Y=5oQrS4z4fRE8IkMaKUsMr Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Migration and yank code assume that qio_channel_shutdown is thread -safe. Document this after checking the code. Signed-off-by: Lukas Straub Reviewed-by: Daniel P. Berrang=C3=A9 Acked-by: Stefan Hajnoczi Acked-by: Dr. David Alan Gilbert --- include/io/channel.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/io/channel.h b/include/io/channel.h index d4557f0930..6b8a2b87b8 100644 --- a/include/io/channel.h +++ b/include/io/channel.h @@ -516,6 +516,8 @@ int qio_channel_close(QIOChannel *ioc, * QIO_CHANNEL_FEATURE_SHUTDOWN prior to calling * this method. * + * This function is thread-safe. + * * Returns: 0 on success, -1 on error */ int qio_channel_shutdown(QIOChannel *ioc, -- 2.20.1 --Sig_/Y=5oQrS4z4fRE8IkMaKUsMr Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGEkACgkQNasLKJxd slhHPBAAhU9pjoH1LQrmZiBAUNfbcFOgtFPxCic1TLjMCJZeYfwZhF1XoHb/8BSh M+SyjZDcc0E6JhEceJgglsu4DMwTUK10g1j2xE6EIimVhNKmzPB1QLLpnSvGJaZP PoCy0hjlNBqgGYsQtTpwIRpEI3DuDouWhXNWbhbJ6DZykKJ5ArlBjBX/zcEDcUn5 zHqRVwzEyg47P1o+u4OXKNJItPJonFkcvQ57dktbNdyJBq/taLcqSUuPHlHch82R Wmxsu4plyNeLrVPaleSPjWeB9+VuFyFApgoSvE7L3w9GDR+XcxufBiEuchxVs7qL j/3lZA7W1Gum4u6XBTipg93Q1rKtK1a1vuG2lz0/2MCU4pz6bn2BKOQFS2ZWlB3Z gcuOQnIj+xI7ZoX1BGa/Lg2KHD9eaT5kaOGmudFDHiEHuF88xaz4Qd0awV0hCdnn 8/x/RxxRK/cIrH/rFPngWqiso4L2aoN3dfEjoChfarTbc1Uo5tRY8yrRM9MiWrs8 L8UsoqOM7n644mRMxZpMbpBFRh4MzF9WEJPToz9JvX5lGLXn8Lj1vPqWbRZI6d3f J5buKEEbBlgJOa1qLK2JnWmsVjnPamrDtjvFbz08THPDBmnDAxOZB8cKiOU/on5A xqHYYQv1YlJC3ojLYvPlW1MGqpMcbsnQTauSkJz6KxG9Chq02ig= =YOem -----END PGP SIGNATURE----- --Sig_/Y=5oQrS4z4fRE8IkMaKUsMr-- From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596529633; cv=none; d=zohomail.com; s=zohoarc; b=TMkgiM8qA0eNZhenRp9IErSbykReBwDWBRH6hST5+YWBGvmcf6/GLyqsY7wWba8JIanyAbf/EtILVN0Sw0Qke2db6mWIY8WgW5A57nXXPNM0LAuPORox1ANEHB7VW1EDP/ac3phnge1oFSKbzCS/nQPGGohtjjJfFePyTxKjhBQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596529633; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jJiANSLgv/H5Do6WJz6D84z5O0+cbPoWlrgPB0cClfg=; b=BjZGyC/TN88ZajXBWIF33QgHUqP6/EE+f26iTin8O8hvxQUiprO0RsoS8bMMr6QNFnoBcwYT7DeWd+NDJvHsMCfWTafb/CE7CGVtgUxXlKb82V9wXtQB3a6c1d0BxaKht4RqJb7Eoaw3IMvV90vXkWK2Dct3SZgZHhIgJ2QyfS0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159652963313756.81801371658662; Tue, 4 Aug 2020 01:27:13 -0700 (PDT) Received: from localhost ([::1]:59238 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2sHv-0003RF-0L for importer@patchew.org; Tue, 04 Aug 2020 04:27:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3J-0003m4-BK; Tue, 04 Aug 2020 04:12:05 -0400 Received: from mout.web.de ([212.227.15.4]:50781) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3H-0006cP-KX; Tue, 04 Aug 2020 04:12:05 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MJWsm-1kIKV41SBs-00Jnta; Tue, 04 Aug 2020 10:11:58 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528718; bh=jJiANSLgv/H5Do6WJz6D84z5O0+cbPoWlrgPB0cClfg=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=d+dsyFmuFysBCHX+4mb9NpoOFqiX/HsMmRCHVuflWOrjFlsDw5sL4g7UDTOaqMutg 5egFcsoYQGzD0sP++bFpmhfl37dPb80ZvSxB4dRZWQQAXp6vmY4XFB2qsinBGYsNzy QWRlGl3Zy+9JZEkRyVRpxRvkHmi2A8Y8mojdPITQ= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:11:57 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 7/8] MAINTAINERS: Add myself as maintainer for yank feature Message-ID: <5562d48f00ccebc3694cb2bd332b56441c64bebe.1596528468.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_//Fon2fwJf+XS0Jau.Rg2Tyr"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:xEIHEBr1PXfi7MuijFwo8/qUx8Grn3ynlzFbrnDhUdIqk04iPDA DdCaou4cHN+kUK+SVUkbT5Tfvy/Yk7R31rgJm5lKenSmx5yKt7QikDgRa208TGBwgln1pbo i8KGdZ9yCtFsNudrrx0ylG8c8zjsyPzGmXCyIHTB8s9NrvLrz6TyebTzFgtIcvlcVPCR3A1 7uKJBxdRnjexXMHy4b5hg== X-UI-Out-Filterresults: notjunk:1;V03:K0:JvKbVnyzl7Q=:WB9fjBumrOB8l7W/Dx0MHr mrQLs9+URj7WOLDr+7A9GqKkZMsgMnkURNY5yXtsVFz1PdroVzjYzDa+3fSA7msUH+FCzIbCt 9Y/OpX08osbvC2RDKYzIdOOi+405dUG9GuEaBkEReAtvE3Ao2QP8c4L+2k5ZQs4EJI/Nw8iJ2 hkrwFK4GrFwNRZNPZ6dKxF+ra02d6fPhTakWY8bHSPnbviJzz19yBVTeXRLfvAZ36zMWsyYno pU5Jb5Yn2KMsBiv0UIv08XjAMR3QOz1Ez9L0DaWQIWNacR357iYOVYECttkhVyEm1aj8kOcSm qASSMhTZqlPlGHf/cbAQ+GHatu60YNO+Jt14rIln61lfUHr/WihoogwUIIlcdj/2o7LAEE7DW /qw9ONTUQcQ0LXmjgcIlB7cUMrKtQVzXfNJrVIveL59LywJO+VtoVdUDxRwmC4JEF65bvH1JB osqLO3Bq0zUJdDs89mWK7W8Fo63VjYMpdVMLrcvWPTA+Ye7yVJ+L1T+FQrO8+35lx+lxMSrC8 Jze0o9If3Mt+cmawJSX+bofQ7DpH5AIKGg6TLB9lS1/ydwg70Ee7u7ln1UvcpESjKIP8iPNgH ONwAG3tPdqr85iNesus+jNoKXfAzw6cW9pNDgED6glmYerwvtbaSiHddE5I0ip1KgguSh79G1 xV+I7Fu/BmWktIuOHX7G7Pufa3Au+dmLvnbG1W1HsbVMyzefjHN4R8JmGNMd113YUYbWD9ra4 Ne/xSNI67MZ3hMP8b8r96R+LiNdVr4hkEPZMoOGzKDU5dwwdxVYsXUrjHV9Yb9UcFoACfqY8c d4/JXkYc4tZL65URZZ9jnQu5rvqJMQAKzQm+yf1hTjz8/Sx2+ZTQcee+Lo61cOlROgC59S8fI 5XEEGNvAhxfje5OwnmzFgGfLDe8k5QYUjC4UYE9q6tdNTx0xljHVXtWk1z9QmcHzxaoHV5247 4nx8GROlw4YDeItg8kSRkHBY/u/1YdjphXOmszxYNCog9qBEcFSwcc14FJ6vnDJvjjHA5iOBo w0cmceIqM8qZtB9t7SXGZCAJ9omFpIktmhjTRYwHCbX5DhNZKVYwSzOJeMsrFGiPJAGcbXU59 CPxWgPh9LLQj5nhpoiHycWnZu3jiknuYTDHjFFbzBB4hulmWi/pWoUpjk8AnDcD2YfpLfckyt dc7ZszcxD7w9tfoREpH/Ozd4Jqjg8An1YVuak3NFdxQBBfW8EPt8rVwo/ksEZDu4jNwPUyzTL W2hLLaZrCJD3zNL82sJQLMOcG2SHhfrHtF3czKA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:12:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_//Fon2fwJf+XS0Jau.Rg2Tyr Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" I'll maintain this for now as the colo usecase is the first user of this functionality. Signed-off-by: Lukas Straub Reviewed-by: Daniel P. Berrang=C3=A9 Acked-by: Stefan Hajnoczi Acked-by: Dr. David Alan Gilbert --- MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 0886eb3d2b..bf5075a637 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2614,6 +2614,12 @@ F: util/uuid.c F: include/qemu/uuid.h F: tests/test-uuid.c +Yank feature +M: Lukas Straub +S: Odd fixes +F: util/yank.c +F: include/qemu/yank.h + COLO Framework M: zhanghailiang S: Maintained -- 2.20.1 --Sig_//Fon2fwJf+XS0Jau.Rg2Tyr Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGE0ACgkQNasLKJxd sljFmg//TtBCNOnsmRx4+t3oQv4sBv6zrw0kEZy4hJY5xBrpRvFhs4guhJjkxmKF FInnIOKymXVsrmWEVBatIF7kFvset3tG+V0q02zaispYia2ciglWGeovEY5BrrmJ wuii+EJxwJWiRUHGCT4z2DZlqtaWj2uDUnDWTtouSv//48AIhMumsfUUqu8aYGP5 XVVBW1zOm5SqyDt6zSOFGfaUw53CZd9PONI5xGTkaZY6wMDS8mCeg4QfzliWPsjM uXYc/FodlJBTnK8RmBF3d6EIGmgYDwvY30bou/YQbU3DYeNyKaSJ7ttbOw7DV8ym hRk2DIsMD5K9HaQ12RdYtMJMch3Kcbn72PfEMugutW0dah6Mdey/JgQFyuuxZLY8 30cnMmgzKMc/BVwEzeVv74qKExraV8QebacF/iNImaBIadqlsFw88WxPMg2mibZc rGsIIaws8BahZByIMu5Fge93PFiL8kOA0VS3yPW6Us5DA3bpU219Mbu3FI9sG1ag ncpd6coVjC3sa+jsmJIMwGWq++hTUJZhWCAjyf+xZ5fMVTDLyGXO+H4KT7ZH/RnF xHipuTV8ELTf/+BuSQZMvUX9Tf9Pk2p9FLVNAEuspS7PpJnQYQWh2DzrP+e5ZfBl AfN27vx8xKrQFWTTwPq/iHfMRiACzWEZt4MwcnnjMWQmiZPkm4w= =8Kpr -----END PGP SIGNATURE----- --Sig_//Fon2fwJf+XS0Jau.Rg2Tyr-- From nobody Wed May 8 07:03:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1596529952; cv=none; d=zohomail.com; s=zohoarc; b=JHSQ+J40V1m9iTkm5KBKl5V/1ykITeYQXlP5YMwHzmlgsJDKwoS3tKfCfuTLPDRnYaqxPmT6Qvu7NdY3bamhbcgnevJAkNiE12XAx2Z9agnMqi3xZsdMOBbiYuvi0z+SRMC2pKsMkDh0UuusAn50l5empgvqd1Rql99Rs9ivu9s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1596529952; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZiRAzxM7FWS4nh7dBMPSN1ivwWkZS1tNBY5PqW0KJPM=; b=HFQC0fdV1h8QY37qwtho/4+6jzZu9o+MvK4c89J1l2udXvHbnhbYYhORcNIQXL8Yh5GU93YV0HMt7mkiBHjgRXWZIKr/2GjTEfvMa2rUJOpOTxCekz8tx5XSrJriJ75dg3B2K2V438/Gg9bIjgdKFzGEl6oTg9xjIgvMZXMgIaI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1596529952361589.8176627648938; Tue, 4 Aug 2020 01:32:32 -0700 (PDT) Received: from localhost ([::1]:33900 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k2sN4-0004uh-Gh for importer@patchew.org; Tue, 04 Aug 2020 04:32:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51262) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3P-0003rX-LV; Tue, 04 Aug 2020 04:12:11 -0400 Received: from mout.web.de ([212.227.17.11]:34305) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k2s3N-0006d0-Vd; Tue, 04 Aug 2020 04:12:11 -0400 Received: from luklap ([89.247.255.220]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0LtnvF-1klwIh2v8X-0118Xe; Tue, 04 Aug 2020 10:12:02 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1596528722; bh=KEmy6YMSKvjy+8JKgUemriIQsd+cq5JBtEE6CKfv37Q=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=a5L+4sC7DiSQXw34/iZxuKfBD8qIi8JAtgpWVqsaZv1TAgM1DHjtX/qUPK7+ILCSD aeIJZxeVnOV36rFO1WjdBBAboGkSPri5Z1XhsDFXIOodkFGa82B4TaAiStLkUP7PZG 2yxEf/trElAMJgotGD4uRERmgTAEuVlG8MERtBcc= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Tue, 4 Aug 2020 10:12:01 +0200 From: Lukas Straub To: qemu-devel Subject: [PATCH v7 8/8] tests/test-char.c: Wait for the chardev to connect in char_socket_client_dupid_test Message-ID: <0c2f168afb1f66ccadef7ed623808aabf604fb65.1596528468.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/vnawgVI_5XO5eiA54j4_/4D"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:JqlhMxM2Wvc+dVPQauu08XY9qCHu6PE/2EtCxKJ310dLgS6sEgY cwyE9Lf0TfT6H7JBJDIeaR06uyXQbe3Xg9iDQtSgya2OmfSRWxBh5dFpbhqMfW/SMG7VTNN IVzKToF7CiNaGsTwYzBc2cG47qH8gmeAEiTTytIqP0gj0Z5QuZ8pOP86l5bcAHaFv+Gp+Rv FImbvexy8AU/bks2ABcyQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:aiL4tHeHjFo=:o77J2CB86xrPXyE84PJmrL TU/1LocODEVls1CFSYDGouVtSfrba2L9pRDs74ADMCCfY0Q/kjQl+B3MTuG4d1X8Uw5OhQ+4M OR2ctlg1YzfNpF5r1hlHxeDOY5wFboe+EfowB18NglNACgWrLDhX0BVkd4oPk+rhFewIA0lzS W4b1v0e4KLY7hJRK+m+zWWzl5I+NpAJZWuHPol2eL2m5XJMYpD2YHV/VCxrKkZeVQgFB0zVOu DpDUzvY+l4Uw1LOOK7mIFAP5lnWBRHvbeIuob2WG84+F12RpagcrQdn0g/nGIBEHwRIWV0RY0 hYLYyKGsuS4JaLZyMp2pnXIs7M+JFN7LLo1g8gaWspJiaaPEqxt1L9bmvgVJ+YawecrSoZvA8 rrHEdFkgWX2bgGqGx6gOy7ECG7LIuyZoxBodm/493KDMhkA6Y28M+srNWHqeTCFVa/gFvwPhO KTX1L2gMsMvl3rtpSVFWFzNYSuJZ4ZLDDbxACSH14bFGVT4EqkSapbqGI6rxphXn17bqCf0zM 6U68S3hwObf/sd/ZB2aNHcXmPIOerh9ZJZS45SigGkon32+vtaLVM8AmpFxkPq2D7R+sEPuJn PLQPTS3hRCApwbYA2bXnKKjKUvV7gYPpkmT+JR55e+K+ptAAoUK9mticok0FzNt+65wSpRQwD 2xMOLcsF003mY5jEw8J7BMQUqdhp0DsgTwJ/GSpb3ktSdHNk05pTGXtEz1jESdaid3aigryxr yL6eTW/TbbgWV92+1SKWsiabkA04uVBtxpRP7Hs4v3T39C52EVJHaSM9SoMSQRwe+hWro8Eu+ HW6Q5JAPxK4Wy9OJH0OueiE8C2/hI+jihM8KXrYWdcLMwdNBm6R/XpP/WUd7YqtSFHKAkqxfn 11Fg8oemU80rzasu/FI2wF1iNeKStiJkbroH3xkWvVKlcrZCb1ufHPuA+JvHs0GdiEBw5lkQn 0rYTqjOXIcVgLjEO2FQfKT1kUa6zr2qBEhZXInnOmiSiAoEnp3RY0gdT5EcN8SYMDc1QIfA+e 5scZjQsEIdA2pOye+2jMOjZfuEo5amtq0gqfAEOEE1I/PgifKA6kzoypQjnIGn61G7k9kkNzr WOIGQWkgK9V/jPd9D4AJnadO2/IaPHaUHDeWepRzFWOwQ9SvdPzqeaVrS1VZ8MKnbVmg1z0bp kldbWeyQ7MjV4AohZNpG4KTre+e6SXqH0jK06bAPg30Nl1AtV8BmkBVp8/uFHbhr3BZu689K8 P1NtaiIdKMjHZNstfdc8iQK7P16q9Zna2llp12w== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/04 04:11:34 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Daniel P. =?UTF-8?B?QmVycmFuZ8Op?=" , qemu-block , Juan Quintela , "Dr. David Alan Gilbert" , Max Reitz , Paolo Bonzini , =?UTF-8?B?TWFyYy1BbmRy?= =?UTF-8?B?w6k=?= Lureau Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: fail (Header signature does not verify) --Sig_/vnawgVI_5XO5eiA54j4_/4D Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" A connecting chardev object has an additional reference by the connecting thread, so if the chardev is still connecting by the end of the test, then the chardev object won't be freed. This in turn means that the yank instance won't be unregistered and when running the next test-case yank_register_instance will abort, because the yank instance is already/still registered. Signed-off-by: Lukas Straub Acked-by: Dr. David Alan Gilbert Reviewed-by: Daniel P. Berrang=C3=A9 --- tests/test-char.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test-char.c b/tests/test-char.c index d35cc839bc..2ced07de69 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -937,6 +937,7 @@ static void char_socket_client_dupid_test(gconstpointer= opaque) g_assert_nonnull(opts); chr1 =3D qemu_chr_new_from_opts(opts, NULL, &error_abort); g_assert_nonnull(chr1); + qemu_chr_wait_connected(chr1, &error_abort); chr2 =3D qemu_chr_new_from_opts(opts, NULL, &local_err); g_assert_null(chr2); -- 2.20.1 --Sig_/vnawgVI_5XO5eiA54j4_/4D Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAl8pGFEACgkQNasLKJxd slgBgQ/9HA7xBYHAxskNGWj+W+tNsqzx5dJAyPjb0qnA5fxpV9vSJwGMbJ5tGOJo ZzL+HuGN0WhAIbFO/Q6c4lhH2aaZdFr9+Csx1CxZBELKMDj7mjLO+Ml8ZfDB0gOi 5O1/B5eagZsX8hmhhhHc5cvNvELj7c8tvHC/MhFT764+1uORUODZBSEYBlrMsytv B0m2vpFkk8dCjE9f7hNUPQSP9qpOciiOlr0dpVqLRzEVm0/MjtL84om6a0ybE9KT 6BvCz0kq4BtncJM3sArSUDMS9d7I/CdhqQpozzR7Y+HVN8bGGMUKHRFqKrzxxUKP u5ZJps0V06iTJQsozen0574drxBTtLZnhwWfKrp9X3n5Jp5evfKBTuFCGLSZ5/E8 o0HDLcsyMbIhYmH5b9k9uW1knnWy6frs6H7Yqz91S16L2MHywwXEk4M6/rNnnXz2 R+nYrMQDNI7hW7AYvVpJmG95/xPp7tKLlUYQ/rvzEqKrYjYj9K+T8HP7/s6iX7/D oIpOiq2aLpReJB9VUwTfZr8K92ubJLGvh8toBJ7/bNSJ2b8aF7DzS29j3sJaUg9c slQvALJax1Ki9TpMzVFyNKVtwZNcPAYO1jx1HpKjSmVvBT9kbJMj4g3xoNFrF6jY PsakuEwTmGz7YL80X/NI0F4RtCcoraUnfWUss4UMdwaXuTkBfCM= =ntmX -----END PGP SIGNATURE----- --Sig_/vnawgVI_5XO5eiA54j4_/4D--