From nobody Tue Dec 16 08:34:51 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1520511700971857.7008299858423; Thu, 8 Mar 2018 04:21:40 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9083E369BD; Thu, 8 Mar 2018 12:21:39 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4C63E9F7F; Thu, 8 Mar 2018 12:21:39 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DCECF4CAB1; Thu, 8 Mar 2018 12:21:38 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w28CLPk0017051 for ; Thu, 8 Mar 2018 07:21:25 -0500 Received: by smtp.corp.redhat.com (Postfix) id E2A6F17DEE; Thu, 8 Mar 2018 12:21:25 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DBE3117D71 for ; Thu, 8 Mar 2018 12:21:24 +0000 (UTC) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 25ECE81DF6 for ; Thu, 8 Mar 2018 12:21:24 +0000 (UTC) Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w28CLC06042906 for ; Thu, 8 Mar 2018 07:21:23 -0500 Received: from e06smtp13.uk.ibm.com (e06smtp13.uk.ibm.com [195.75.94.109]) by mx0b-001b2d01.pphosted.com with ESMTP id 2gk51g852q-1 (version=TLSv1.2 cipher=AES256-SHA256 bits=256 verify=NOT) for ; Thu, 08 Mar 2018 07:21:16 -0500 Received: from localhost by e06smtp13.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 8 Mar 2018 12:20:52 -0000 Received: from b06cxnps3074.portsmouth.uk.ibm.com (9.149.109.194) by e06smtp13.uk.ibm.com (192.168.101.143) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 8 Mar 2018 12:20:49 -0000 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w28CKniM64487598 for ; Thu, 8 Mar 2018 12:20:49 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C4BA0A404D for ; Thu, 8 Mar 2018 12:13:44 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B1D5FA4057 for ; Thu, 8 Mar 2018 12:13:44 +0000 (GMT) Received: from marc-ibm.boeblingen.de.ibm.com (unknown [9.152.224.51]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP for ; Thu, 8 Mar 2018 12:13:44 +0000 (GMT) From: Marc Hartmayer To: Date: Thu, 8 Mar 2018 13:20:26 +0100 In-Reply-To: <20180308122043.15608-1-mhartmay@linux.vnet.ibm.com> References: <20180308122043.15608-1-mhartmay@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18030812-0012-0000-0000-000005BA5C67 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18030812-0013-0000-0000-000019367C64 Message-Id: <20180308122043.15608-4-mhartmay@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-03-08_07:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1803080146 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 08 Mar 2018 12:21:24 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 08 Mar 2018 12:21:24 +0000 (UTC) for IP:'148.163.158.5' DOMAIN:'mx0b-001b2d01.pphosted.com' HELO:'mx0a-001b2d01.pphosted.com' FROM:'mhartmay@linux.vnet.ibm.com' RCPT:'' X-RedHat-Spam-Score: -0.72 (RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL) 148.163.158.5 mx0b-001b2d01.pphosted.com 148.163.158.5 mx0b-001b2d01.pphosted.com X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 03/20] virConnect(Un)RegisterCloseCallback: Throw an error in case the API is not supported X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 08 Mar 2018 12:21:40 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Report an error in case the driver does not support connect(Un)registerCloseCallback. The commit 'close callback: move it to driver' (88f09b75eb99) moved the responsibility for the close callback to the driver. But if the driver doesn't support the connectRegisterCloseCallback API this function does nothing, even no unsupported error report. The only case where an error is reported is when the API is supported but the call fails. The same behavior applies to virConnectUnregisterCloseCallback. This behavior is not intended as there are many use cases of this API where the state of for example allocations depends on the result of these functions. To keep the behavior of virsh as before it must silently ignore unsupported error for virConnectRegisterCloseCallback. For the remote driver this change wouldn't be needed, but for the byhve driver, for example. Otherwise the user would see the error message that virsh was unable to register a disconnect callback. Signed-off-by: Marc Hartmayer Reviewed-by: Boris Fiuczynski Reviewed-by: John Ferlan --- src/libvirt-host.c | 24 ++++++++++++++---------- tools/virsh.c | 11 +++++++++-- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/libvirt-host.c b/src/libvirt-host.c index 7ff7407a0874..bfa104b39918 100644 --- a/src/libvirt-host.c +++ b/src/libvirt-host.c @@ -1221,12 +1221,14 @@ virConnectRegisterCloseCallback(virConnectPtr conn, virCheckConnectReturn(conn, -1); virCheckNonNullArgGoto(cb, error); =20 - if (conn->driver->connectRegisterCloseCallback && - conn->driver->connectRegisterCloseCallback(conn, cb, opaque, freec= b) < 0) - goto error; - - return 0; + if (conn->driver->connectRegisterCloseCallback) { + int ret =3D conn->driver->connectRegisterCloseCallback(conn, cb, o= paque, freecb); + if (ret < 0) + goto error; + return ret; + } =20 + virReportUnsupportedError(); error: virDispatchError(conn); return -1; @@ -1256,12 +1258,14 @@ virConnectUnregisterCloseCallback(virConnectPtr con= n, virCheckConnectReturn(conn, -1); virCheckNonNullArgGoto(cb, error); =20 - if (conn->driver->connectUnregisterCloseCallback && - conn->driver->connectUnregisterCloseCallback(conn, cb) < 0) - goto error; - - return 0; + if (conn->driver->connectUnregisterCloseCallback) { + int ret =3D conn->driver->connectUnregisterCloseCallback(conn, cb); + if (ret < 0) + goto error; + return ret; + } =20 + virReportUnsupportedError(); error: virDispatchError(conn); return -1; diff --git a/tools/virsh.c b/tools/virsh.c index 5f8352e861d3..2df1197252b3 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -256,8 +256,15 @@ virshReconnect(vshControl *ctl, const char *name, bool= readonly, bool force) priv->readonly =3D readonly; =20 if (virConnectRegisterCloseCallback(priv->conn, virshCatchDisconne= ct, - ctl, NULL) < 0) - vshError(ctl, "%s", _("Unable to register disconnect callback"= )); + ctl, NULL) < 0) { + virErrorPtr error =3D virGetLastError(); + if (error && error->code =3D=3D VIR_ERR_NO_SUPPORT) { + /* silently ignore the unsupported error */ + virResetLastError(); + } else { + vshError(ctl, "%s", _("Unable to register disconnect callb= ack")); + } + } if (connected && !force) vshError(ctl, "%s", _("Reconnected to the hypervisor")); } --=20 2.13.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list