From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493161621134294.6754408430726; Tue, 25 Apr 2017 16:07:01 -0700 (PDT) Received: from localhost ([::1]:51825 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39Xt-0004Mh-K1 for importer@patchew.org; Tue, 25 Apr 2017 19:06:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W1-0003ED-JA for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39Vy-0004Qo-Dm for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:01 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:53026 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39Vy-0004Qh-7J for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:04:58 -0400 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN43km079430 for ; Tue, 25 Apr 2017 19:04:57 -0400 Received: from e17.ny.us.ibm.com (e17.ny.us.ibm.com [129.33.205.207]) by mx0a-001b2d01.pphosted.com with ESMTP id 2a2ebttxnb-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:04:56 -0400 Received: from localhost by e17.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 19:04:56 -0400 Received: from b01cxnp22036.gho.pok.ibm.com (9.57.198.26) by e17.ny.us.ibm.com (146.89.104.204) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 19:04:55 -0400 Received: from b01ledav002.gho.pok.ibm.com (b01ledav002.gho.pok.ibm.com [9.57.199.107]) by b01cxnp22036.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4sKD52756730; Tue, 25 Apr 2017 23:04:54 GMT Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9A2F9124037; Tue, 25 Apr 2017 19:04:49 -0400 (EDT) Received: from localhost (unknown [9.53.92.194]) by b01ledav002.gho.pok.ibm.com (Postfix) with ESMTP id 88E32124044; Tue, 25 Apr 2017 19:04:49 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:34 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17042523-0040-0000-0000-00000325624E X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852451; UDB=6.00421367; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:56 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-0041-0000-0000-000007197B71 Message-Id: <1493161481-29595-2-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PULL 1/8] qemu-ga: Make QGA VSS provider service run only when needed X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Sameeh Jubran Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sameeh Jubran Currently the service runs in background on boot even though it is not needed and once it is running it never stops. The service needs to be running only during freeze operation and it should be stopped after executing thaw. Signed-off-by: Sameeh Jubran Signed-off-by: Michael Roth --- qga/vss-win32/install.cpp | 28 ++++++++++++++++++++++++++-- qga/vss-win32/install.h | 20 ++++++++++++++++++++ qga/vss-win32/requester.cpp | 2 ++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 qga/vss-win32/install.h diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp index f4160a3..f41fcdf 100644 --- a/qga/vss-win32/install.cpp +++ b/qga/vss-win32/install.cpp @@ -14,7 +14,7 @@ =20 #include "vss-common.h" #include -#include +#include "install.h" #include #include #include @@ -276,7 +276,7 @@ STDAPI COMRegister(void) =20 chk(pCatalog->CreateServiceForApplication( _bstr_t(QGA_PROVIDER_LNAME), _bstr_t(QGA_PROVIDER_LNAME), - _bstr_t(L"SERVICE_AUTO_START"), _bstr_t(L"SERVICE_ERROR_NORMAL= "), + _bstr_t(L"SERVICE_DEMAND_START"), _bstr_t(L"SERVICE_ERROR_NORM= AL"), _bstr_t(L""), _bstr_t(L".\\localsystem"), _bstr_t(L""), FALSE)= ); chk(pCatalog->InstallComponent(_bstr_t(QGA_PROVIDER_LNAME), _bstr_t(dllPath), _bstr_t(tlbPath), @@ -461,3 +461,27 @@ namespace _com_util return bstr; } } + +/* Stop QGA VSS provider service from COM+ Application Admin Catalog */ + +STDAPI StopService(void) +{ + HRESULT hr; + COMInitializer initializer; + COMPointer pUnknown; + COMPointer pCatalog; + + int count =3D 0; + + chk(QGAProviderFind(QGAProviderCount, (void *)&count)); + if (count) { + chk(CoCreateInstance(CLSID_COMAdminCatalog, NULL, CLSCTX_INPROC_SE= RVER, + IID_IUnknown, (void **)pUnknown.replace())); + chk(pUnknown->QueryInterface(IID_ICOMAdminCatalog2, + (void **)pCatalog.replace())); + chk(pCatalog->ShutdownApplication(_bstr_t(QGA_PROVIDER_LNAME))); + } + +out: + return hr; +} diff --git a/qga/vss-win32/install.h b/qga/vss-win32/install.h new file mode 100644 index 0000000..35364af --- /dev/null +++ b/qga/vss-win32/install.h @@ -0,0 +1,20 @@ +/* + * QEMU Guest Agent VSS requester declarations + * + * Copyright Hitachi Data Systems Corp. 2013 + * + * Authors: + * Tomoki Sekiyama + * + * 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 INSTALL_H +#define INSTALL_H + +#include + +STDAPI StopService(void); + +#endif diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp index 0cd2f0e..301762d 100644 --- a/qga/vss-win32/requester.cpp +++ b/qga/vss-win32/requester.cpp @@ -13,6 +13,7 @@ #include "qemu/osdep.h" #include "vss-common.h" #include "requester.h" +#include "install.h" #include #include =20 @@ -501,4 +502,5 @@ void requester_thaw(int *num_vols, ErrorSet *errset) requester_cleanup(); =20 CoUninitialize(); + StopService(); } --=20 2.7.4 From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493161622648161.71059451359758; Tue, 25 Apr 2017 16:07:02 -0700 (PDT) Received: from localhost ([::1]:51826 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39Xx-0004QV-Ax for importer@patchew.org; Tue, 25 Apr 2017 19:07:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W3-0003EK-QE for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39W0-0004RM-M2 for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:03 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:39150) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39W0-0004Qy-Du for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:00 -0400 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN42Hk009419 for ; Tue, 25 Apr 2017 19:04:59 -0400 Received: from e16.ny.us.ibm.com (e16.ny.us.ibm.com [129.33.205.206]) by mx0a-001b2d01.pphosted.com with ESMTP id 2a2ebwjvjp-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:04:58 -0400 Received: from localhost by e16.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 19:04:57 -0400 Received: from b01cxnp22035.gho.pok.ibm.com (9.57.198.25) by e16.ny.us.ibm.com (146.89.104.203) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 19:04:55 -0400 Received: from b01ledav03.gho.pok.ibm.com (b01ledav003.gho.pok.ibm.com [9.57.199.108]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4t1164225412; Tue, 25 Apr 2017 23:04:55 GMT Received: from b01ledav03.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6DD65B204E; Tue, 25 Apr 2017 19:04:50 -0400 (EDT) Received: from localhost (unknown [9.53.92.194]) by b01ledav03.gho.pok.ibm.com (Postfix) with ESMTP id 52C52B2046; Tue, 25 Apr 2017 19:04:50 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:35 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17042523-0024-0000-0000-00000256B914 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852450; UDB=6.00421367; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:57 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-0025-0000-0000-000043A9B10F Message-Id: <1493161481-29595-3-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [PULL 2/8] qga-win: Enable 'can-offline' field in 'guest-get-vcpus' reply X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Sameeh Jubran , qemu-stable@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sameeh Jubran The QGA schema states: @can-offline: Whether offlining the VCPU is possible. This member is always filled in by the guest agent when the structure is returned, and always ignored on input (hence it can be omitted then). Currently 'can-offline' is missing entirely from the reply. This causes errors in libvirt which is expecting the reply to be compliant with the schema docs. BZ#1438735: https://bugzilla.redhat.com/show_bug.cgi?id=3D1438735 Signed-off-by: Sameeh Jubran Reviewed-by: Eric Blake Cc: qemu-stable@nongnu.org Signed-off-by: Michael Roth --- qga/commands-win32.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 04026ee..9fec1fb 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -1344,7 +1344,7 @@ GuestLogicalProcessorList *qmp_guest_get_vcpus(Error = **errp) vcpu =3D g_malloc0(sizeof *vcpu); vcpu->logical_id =3D current++; vcpu->online =3D true; - vcpu->has_can_offline =3D false; + vcpu->has_can_offline =3D true; =20 entry =3D g_malloc0(sizeof *entry); entry->value =3D vcpu; --=20 2.7.4 From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493161774111759.4984153413642; Tue, 25 Apr 2017 16:09:34 -0700 (PDT) Received: from localhost ([::1]:51835 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39aO-0006oI-Mi for importer@patchew.org; Tue, 25 Apr 2017 19:09:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45185) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W3-0003EJ-CS for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39W0-0004R9-7O for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:03 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:53060 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39W0-0004Qx-1e for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:00 -0400 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN44Oa079523 for ; Tue, 25 Apr 2017 19:04:59 -0400 Received: from e19.ny.us.ibm.com (e19.ny.us.ibm.com [129.33.205.209]) by mx0a-001b2d01.pphosted.com with ESMTP id 2a2ebttxpa-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:04:59 -0400 Received: from localhost by e19.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 19:04:58 -0400 Received: from b01cxnp22034.gho.pok.ibm.com (9.57.198.24) by e19.ny.us.ibm.com (146.89.104.206) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 19:04:56 -0400 Received: from b01ledav004.gho.pok.ibm.com (b01ledav004.gho.pok.ibm.com [9.57.199.109]) by b01cxnp22034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4ton44564644; Tue, 25 Apr 2017 23:04:55 GMT Received: from b01ledav004.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C4A88112062; Tue, 25 Apr 2017 19:04:54 -0400 (EDT) Received: from localhost (unknown [9.53.92.194]) by b01ledav004.gho.pok.ibm.com (Postfix) with ESMTP id B0B4E112061; Tue, 25 Apr 2017 19:04:54 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:36 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17042523-0056-0000-0000-0000034C5CC4 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852451; UDB=6.00421367; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:58 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-0057-0000-0000-0000078274FC Message-Id: <1493161481-29595-4-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=4 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PULL 3/8] qga-win: Fix a bug where qemu-ga service is stuck during stop operation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Sameeh Jubran Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sameeh Jubran After triggering a freeze command without any following thaw command, qemu-ga will not respond to stop operation. This behaviour is wanted on Lin= ux as there is no time limit for a freeze command and we want to prevent quitting in the middle of freeze, on the other hand on Windows the time limit for freeze is 10 seconds, so we should wait for the timeout, thaw the file system and quit. Signed-off-by: Sameeh Jubran Signed-off-by: Michael Roth --- qga/main.c | 23 +++++++++++++++++++++++ qga/vss-win32.h | 1 + qga/vss-win32/vss-common.h | 11 +---------- qga/vss-win32/vss-handles.h | 14 ++++++++++++++ 4 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 qga/vss-win32/vss-handles.h diff --git a/qga/main.c b/qga/main.c index 07c2953..ad6f68f 100644 --- a/qga/main.c +++ b/qga/main.c @@ -131,9 +131,32 @@ static void quit_handler(int sig) * unless all log/pid files are on unfreezable filesystems. there's * also a very likely chance killing the agent before unfreezing * the filesystems is a mistake (or will be viewed as one later). + * On Windows the freeze interval is limited to 10 seconds, so + * we should quit, but first we should wait for the timeout, thaw + * the filesystem and quit. */ if (ga_is_frozen(ga_state)) { +#ifdef _WIN32 + int i =3D 0; + Error *err =3D NULL; + HANDLE hEventTimeout; + + g_debug("Thawing filesystems before exiting"); + + hEventTimeout =3D OpenEvent(EVENT_ALL_ACCESS, FALSE, EVENT_NAME_TI= MEOUT); + if (hEventTimeout) { + WaitForSingleObject(hEventTimeout, 0); + CloseHandle(hEventTimeout); + } + qga_vss_fsfreeze(&i, false, &err); + if (err) { + g_debug("Error unfreezing filesystems prior to exiting: %s", + error_get_pretty(err)); + error_free(err); + } +#else return; +#endif } g_debug("received signal num %d, quitting", sig); =20 diff --git a/qga/vss-win32.h b/qga/vss-win32.h index 51d303a..4f8e39a 100644 --- a/qga/vss-win32.h +++ b/qga/vss-win32.h @@ -13,6 +13,7 @@ #ifndef VSS_WIN32_H #define VSS_WIN32_H =20 +#include "qga/vss-win32/vss-handles.h" =20 bool vss_init(bool init_requester); void vss_deinit(bool deinit_requester); diff --git a/qga/vss-win32/vss-common.h b/qga/vss-win32/vss-common.h index c81a856..61c170b 100644 --- a/qga/vss-win32/vss-common.h +++ b/qga/vss-win32/vss-common.h @@ -51,21 +51,12 @@ * http://www.microsoft.com/en-us/download/details.aspx?id=3D23490 */ #include +#include "vss-handles.h" =20 /* Macros to convert char definitions to wchar */ #define _L(a) L##a #define L(a) _L(a) =20 -/* Constants for QGA VSS Provider */ - -#define QGA_PROVIDER_NAME "QEMU Guest Agent VSS Provider" -#define QGA_PROVIDER_LNAME L(QGA_PROVIDER_NAME) -#define QGA_PROVIDER_VERSION L(QEMU_VERSION) - -#define EVENT_NAME_FROZEN "Global\\QGAVSSEvent-frozen" -#define EVENT_NAME_THAW "Global\\QGAVSSEvent-thaw" -#define EVENT_NAME_TIMEOUT "Global\\QGAVSSEvent-timeout" - const GUID g_gProviderId =3D { 0x3629d4ed, 0xee09, 0x4e0e, {0x9a, 0x5c, 0x6d, 0x8b, 0xa2, 0x87, 0x2a, 0xef} }; const GUID g_gProviderVersion =3D { 0x11ef8b15, 0xcac6, 0x40d6, diff --git a/qga/vss-win32/vss-handles.h b/qga/vss-win32/vss-handles.h new file mode 100644 index 0000000..ff399dd --- /dev/null +++ b/qga/vss-win32/vss-handles.h @@ -0,0 +1,14 @@ +#ifndef VSS_HANDLES +#define VSS_HANDLES + +/* Constants for QGA VSS Provider */ + +#define QGA_PROVIDER_NAME "QEMU Guest Agent VSS Provider" +#define QGA_PROVIDER_LNAME L(QGA_PROVIDER_NAME) +#define QGA_PROVIDER_VERSION L(QEMU_VERSION) + +#define EVENT_NAME_FROZEN "Global\\QGAVSSEvent-frozen" +#define EVENT_NAME_THAW "Global\\QGAVSSEvent-thaw" +#define EVENT_NAME_TIMEOUT "Global\\QGAVSSEvent-timeout" + +#endif --=20 2.7.4 From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493161642642901.4211098235943; Tue, 25 Apr 2017 16:07:22 -0700 (PDT) Received: from localhost ([::1]:51828 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39YG-0004i1-VZ for importer@patchew.org; Tue, 25 Apr 2017 19:07:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45232) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W5-0003FJ-5D for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39W2-0004S8-10 for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:05 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:50213) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39W1-0004Re-PG for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:01 -0400 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN44W2090198 for ; Tue, 25 Apr 2017 19:05:00 -0400 Received: from e15.ny.us.ibm.com (e15.ny.us.ibm.com [129.33.205.205]) by mx0a-001b2d01.pphosted.com with ESMTP id 2a2ebxaxke-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:05:00 -0400 Received: from localhost by e15.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 19:04:59 -0400 Received: from b01cxnp22035.gho.pok.ibm.com (9.57.198.25) by e15.ny.us.ibm.com (146.89.104.202) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 19:04:56 -0400 Received: from b01ledav005.gho.pok.ibm.com (b01ledav005.gho.pok.ibm.com [9.57.199.110]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4u7A65536232; Tue, 25 Apr 2017 23:04:56 GMT Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E9862AE052; Tue, 25 Apr 2017 19:04:44 -0400 (EDT) Received: from localhost (unknown [9.53.92.194]) by b01ledav005.gho.pok.ibm.com (Postfix) with ESMTP id D86B8AE04B; Tue, 25 Apr 2017 19:04:44 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:37 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17042523-0036-0000-0000-000001EE6B80 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852450; UDB=6.00421366; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:58 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-0037-0000-0000-000040009074 Message-Id: <1493161481-29595-5-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [PULL 4/8] qga-win: Fix Event Viewer errors caused by qemu-ga X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Sameeh Jubran Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sameeh Jubran When the command "guest-fsfreeze-freeze" is executed it causes the VSS service to log the error below in the Event Viewer. This error is caused by an issue in the function "CommitSnapshots" in provider.cpp: * When VSS_TIMEOUT_MSEC expires the funtion returns E_ABORT. This causes the error #12293. |event id| error | * 12293 : Volume Shadow Copy Service error: Error calling a routine on a Shadow Copy Provider {00000000-0000-0000-0000-000000000000}. Routine details CommitSnapshots [hr =3D 0x80004004, Operation aborted. Signed-off-by: Sameeh Jubran Signed-off-by: Michael Roth --- qga/vss-win32/provider.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/qga/vss-win32/provider.cpp b/qga/vss-win32/provider.cpp index ef94669..72d8b0e 100644 --- a/qga/vss-win32/provider.cpp +++ b/qga/vss-win32/provider.cpp @@ -377,7 +377,6 @@ STDMETHODIMP CQGAVssProvider::CommitSnapshots(VSS_ID Sn= apshotSetId) if (WaitForSingleObject(hEventThaw, VSS_TIMEOUT_MSEC) !=3D WAIT_OBJECT= _0) { /* Send event to qemu-ga to notify the provider is timed out */ SetEvent(hEventTimeout); - hr =3D E_ABORT; } =20 CloseHandle(hEventThaw); --=20 2.7.4 From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493161899652244.75543401672326; Tue, 25 Apr 2017 16:11:39 -0700 (PDT) Received: from localhost ([::1]:51847 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39cQ-0000AZ-EC for importer@patchew.org; Tue, 25 Apr 2017 19:11:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W4-0003Ep-IM for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39W1-0004Ra-51 for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:04 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:51296 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39W0-0004RH-Vb for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:01 -0400 Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN42pi063349 for ; Tue, 25 Apr 2017 19:05:00 -0400 Received: from e15.ny.us.ibm.com (e15.ny.us.ibm.com [129.33.205.205]) by mx0b-001b2d01.pphosted.com with ESMTP id 2a2ebujym8-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:04:59 -0400 Received: from localhost by e15.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 19:04:59 -0400 Received: from b01cxnp22035.gho.pok.ibm.com (9.57.198.25) by e15.ny.us.ibm.com (146.89.104.202) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 19:04:57 -0400 Received: from b01ledav006.gho.pok.ibm.com (b01ledav006.gho.pok.ibm.com [9.57.199.111]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4urS65142878; Tue, 25 Apr 2017 23:04:56 GMT Received: from b01ledav006.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8D032AC03A; Tue, 25 Apr 2017 19:04:46 -0400 (EDT) Received: from localhost (unknown [9.53.92.194]) by b01ledav006.gho.pok.ibm.com (Postfix) with ESMTP id 70A3BAC03F; Tue, 25 Apr 2017 19:04:46 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:38 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17042523-0036-0000-0000-000001EE6B81 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852450; UDB=6.00421366; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:58 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-0037-0000-0000-00004000907A Message-Id: <1493161481-29595-6-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PULL 5/8] qga: Add 'guest-get-host-name' command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Vinzenz Feenstra Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Vinzenz Feenstra Retrieving the guest host name is a very useful feature for virtual managem= ent systems. This information can help to have more user friendly VM access details, instead of an IP there would be the host name. Also the host name reported can be used to have automated checks for valid SSL certificates. virsh # qemu-agent-command F25 '{ "execute": "guest-get-host-name" }' {"return":{"host-name":"F25.lab.evilissimo.net"}} Signed-off-by: Vinzenz Feenstra * minor whitespace fix-ups Signed-off-by: Michael Roth --- qga/commands.c | 11 +++++++++++ qga/qapi-schema.json | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/qga/commands.c b/qga/commands.c index 4d92946..57a31bb 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -499,3 +499,14 @@ int ga_parse_whence(GuestFileWhence *whence, Error **e= rrp) error_setg(errp, "invalid whence code %"PRId64, whence->u.value); return -1; } + +GuestHostName *qmp_guest_get_host_name(Error **err) +{ + GuestHostName *result =3D NULL; + gchar const *hostname =3D g_get_host_name(); + if (hostname !=3D NULL) { + result =3D g_new0(GuestHostName, 1); + result->host_name =3D g_strdup(hostname); + } + return result; +} diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index a02dbf2..6307ae2 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1042,3 +1042,29 @@ 'data': { 'path': 'str', '*arg': ['str'], '*env': ['str'], '*input-data': 'str', '*capture-output': 'bool' }, 'returns': 'GuestExec' } + + +## +# @GuestHostName: +# @host-name: Fully qualified domain name of the guest OS +# +# Since: 2.10 +## +{ 'struct': 'GuestHostName', + 'data': { 'host-name': 'str' } } + +## +# @guest-get-host-name: +# +# Return a name for the machine. +# +# The returned name is not necessarily a fully-qualified domain name, or e= ven +# present in DNS or some other name service at all. It need not even be un= ique +# on your local network or site, but usually it is. +# +# Returns: the host name of the machine on success +# +# Since: 2.10 +## +{ 'command': 'guest-get-host-name', + 'returns': 'GuestHostName' } --=20 2.7.4 From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493161780652347.6311412407241; Tue, 25 Apr 2017 16:09:40 -0700 (PDT) Received: from localhost ([::1]:51837 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39aV-0006tJ-Am for importer@patchew.org; Tue, 25 Apr 2017 19:09:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45255) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W7-0003Ig-Gj for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39W4-0004Sv-Bj for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:07 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:34468) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39W4-0004SX-36 for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:04 -0400 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN4ZQ9133273 for ; Tue, 25 Apr 2017 19:05:02 -0400 Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by mx0a-001b2d01.pphosted.com with ESMTP id 2a2ebwaycp-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:05:01 -0400 Received: from localhost by e33.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 17:05:01 -0600 Received: from b03cxnp08027.gho.boulder.ibm.com (9.17.130.19) by e33.co.us.ibm.com (192.168.1.133) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 17:04:57 -0600 Received: from b03ledav001.gho.boulder.ibm.com (b03ledav001.gho.boulder.ibm.com [9.17.130.232]) by b03cxnp08027.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4vlD10748294; Tue, 25 Apr 2017 16:04:57 -0700 Received: from b03ledav001.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5179D6E035; Tue, 25 Apr 2017 17:04:57 -0600 (MDT) Received: from localhost (unknown [9.53.92.194]) by b03ledav001.gho.boulder.ibm.com (Postfix) with ESMTP id 3965A6E041; Tue, 25 Apr 2017 17:04:57 -0600 (MDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:39 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 x-cbid: 17042523-0008-0000-0000-000007AD43BD X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852451; UDB=6.00421366; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:59 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-0009-0000-0000-000041C7DC33 Message-Id: <1493161481-29595-7-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by mx0a-001b2d01.pphosted.com id v3PN4ZQ9133273 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 Subject: [Qemu-devel] [PULL 6/8] qga: improve fsfreeze documentations X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau Some users find the fsfreeze behaviour confusing. Add some notes about invalid mount points and Windows usage. Related to: https://bugzilla.redhat.com/show_bug.cgi?id=3D1436976 Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Vinzenz Feenstra Signed-off-by: Michael Roth --- qga/qapi-schema.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index 6307ae2..0f4cba5 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -426,7 +426,13 @@ ## # @guest-fsfreeze-freeze: # -# Sync and freeze all freezable, local guest filesystems +# Sync and freeze all freezable, local guest filesystems. If this +# command succeeded, you may call @guest-fsfreeze-thaw later to +# unfreeze. +# +# Note: On Windows, the command is implemented with the help of a +# Volume Shadow-copy Service DLL helper. The frozen state is limited +# for up to 10 seconds by VSS. # # Returns: Number of file systems currently frozen. On error, all filesyst= ems # will be thawed. @@ -439,10 +445,12 @@ ## # @guest-fsfreeze-freeze-list: # -# Sync and freeze specified guest filesystems +# Sync and freeze specified guest filesystems. +# See also @guest-fsfreeze-freeze. # # @mountpoints: an array of mountpoints of filesystems to be frozen. # If omitted, every mounted filesystem is frozen. +# Invalid mount points are ignored. # # Returns: Number of file systems currently frozen. On error, all filesyst= ems # will be thawed. --=20 2.7.4 From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1493161898457438.21882285428387; Tue, 25 Apr 2017 16:11:38 -0700 (PDT) Received: from localhost ([::1]:51846 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39cP-00009E-0P for importer@patchew.org; Tue, 25 Apr 2017 19:11:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45219) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W4-0003Ev-Lv for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39W1-0004Rk-B7 for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:04 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:53945 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39W1-0004RR-4q for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:01 -0400 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN4237108521 for ; Tue, 25 Apr 2017 19:05:00 -0400 Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by mx0b-001b2d01.pphosted.com with ESMTP id 2a2ebvtyvb-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:05:00 -0400 Received: from localhost by e32.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 17:04:59 -0600 Received: from b03cxnp08025.gho.boulder.ibm.com (9.17.130.17) by e32.co.us.ibm.com (192.168.1.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 17:04:58 -0600 Received: from b03ledav002.gho.boulder.ibm.com (b03ledav002.gho.boulder.ibm.com [9.17.130.233]) by b03cxnp08025.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4vmo11993432; Tue, 25 Apr 2017 16:04:57 -0700 Received: from b03ledav002.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B28D6136040; Tue, 25 Apr 2017 17:04:57 -0600 (MDT) Received: from localhost (unknown [9.53.92.194]) by b03ledav002.gho.boulder.ibm.com (Postfix) with ESMTP id 92ABD13603C; Tue, 25 Apr 2017 17:04:57 -0600 (MDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:40 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17042523-0004-0000-0000-00001207549F X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852451; UDB=6.00421367; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:59 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-0005-0000-0000-00007EEC99BC Message-Id: <1493161481-29595-8-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PULL 7/8] qga: Add 'guest-get-users' command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Vinzenz Feenstra Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Vinzenz Feenstra A command that will list all currently logged in users, and the time since when they are logged in. Examples: virsh # qemu-agent-command F25 '{ "execute": "guest-get-users" }' {"return":[{"login-time":1490622289.903835,"user":"root"}]} virsh # qemu-agent-command Win2k12r2 '{ "execute": "guest-get-users" }' {"return":[{"login-time":1490351044.670552,"domain":"LADIDA", "user":"Administrator"}]} Signed-off-by: Vinzenz Feenstra Signed-off-by: Michael Roth --- configure | 2 +- include/glib-compat.h | 5 +++ qga/commands-posix.c | 60 +++++++++++++++++++++++++++++ qga/commands-win32.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ qga/qapi-schema.json | 25 ++++++++++++ 5 files changed, 194 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 5c2accc..74ba64b 100755 --- a/configure +++ b/configure @@ -743,7 +743,7 @@ if test "$mingw32" =3D "yes" ; then sysconfdir=3D"\${prefix}" local_statedir=3D confsuffix=3D"" - libs_qga=3D"-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga" + libs_qga=3D"-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -liphlpapi -lnetapi32= $libs_qga" fi =20 werror=3D"" diff --git a/include/glib-compat.h b/include/glib-compat.h index 863c8cf..f8ee9dc 100644 --- a/include/glib-compat.h +++ b/include/glib-compat.h @@ -217,6 +217,11 @@ static inline void g_hash_table_add(GHashTable *hash_t= able, gpointer key) { g_hash_table_replace(hash_table, key, key); } + +static gboolean g_hash_table_contains(GHashTable *hash_table, gpointer key) +{ + return g_hash_table_lookup_extended(hash_table, key, NULL, NULL); +} #endif =20 #ifndef g_assert_true diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 915df9e..ba06be4 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "qga/guest-agent-core.h" #include "qga-qmp-commands.h" #include "qapi/qmp/qerror.h" @@ -2517,3 +2518,62 @@ void ga_command_state_init(GAState *s, GACommandStat= e *cs) ga_command_state_add(cs, NULL, guest_fsfreeze_cleanup); #endif } + +#define QGA_MICRO_SECOND_TO_SECOND 1000000 + +static double ga_get_login_time(struct utmpx *user_info) +{ + double seconds =3D (double)user_info->ut_tv.tv_sec; + double useconds =3D (double)user_info->ut_tv.tv_usec; + useconds /=3D QGA_MICRO_SECOND_TO_SECOND; + return seconds + useconds; +} + +GuestUserList *qmp_guest_get_users(Error **err) +{ + GHashTable *cache =3D NULL; + GuestUserList *head =3D NULL, *cur_item =3D NULL; + struct utmpx *user_info =3D NULL; + gpointer value =3D NULL; + GuestUser *user =3D NULL; + GuestUserList *item =3D NULL; + double login_time =3D 0; + + cache =3D g_hash_table_new(g_str_hash, g_str_equal); + setutxent(); + + for (;;) { + user_info =3D getutxent(); + if (user_info =3D=3D NULL) { + break; + } else if (user_info->ut_type !=3D USER_PROCESS) { + continue; + } else if (g_hash_table_contains(cache, user_info->ut_user)) { + value =3D g_hash_table_lookup(cache, user_info->ut_user); + user =3D (GuestUser *)value; + login_time =3D ga_get_login_time(user_info); + /* We're ensuring the earliest login time to be sent */ + if (login_time < user->login_time) { + user->login_time =3D login_time; + } + continue; + } + + item =3D g_new0(GuestUserList, 1); + item->value =3D g_new0(GuestUser, 1); + item->value->user =3D g_strdup(user_info->ut_user); + item->value->login_time =3D ga_get_login_time(user_info); + + g_hash_table_insert(cache, item->value->user, item->value); + + if (!cur_item) { + head =3D cur_item =3D item; + } else { + cur_item->next =3D item; + cur_item =3D item; + } + } + endutxent(); + g_hash_table_destroy(cache); + return head; +} diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 9fec1fb..439d229 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -11,6 +11,9 @@ * See the COPYING file in the top-level directory. */ =20 +#ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0600 +#endif #include "qemu/osdep.h" #include #include @@ -25,6 +28,7 @@ #include #endif #include +#include =20 #include "qga/guest-agent-core.h" #include "qga/vss-win32.h" @@ -1536,3 +1540,102 @@ void ga_command_state_init(GAState *s, GACommandSta= te *cs) ga_command_state_add(cs, NULL, guest_fsfreeze_cleanup); } } + +/* MINGW is missing two fields: IncomingFrames & OutgoingFrames */ +typedef struct _GA_WTSINFOA { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingFrames; + DWORD OutgoingFrames; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBy; + CHAR WinStationName[WINSTATIONNAME_LENGTH]; + CHAR Domain[DOMAIN_LENGTH]; + CHAR UserName[USERNAME_LENGTH + 1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + +} GA_WTSINFOA; + +GuestUserList *qmp_guest_get_users(Error **err) +{ +#if (_WIN32_WINNT >=3D 0x0600) +#define QGA_NANOSECONDS 10000000 + + GHashTable *cache =3D NULL; + GuestUserList *head =3D NULL, *cur_item =3D NULL; + + DWORD buffer_size =3D 0, count =3D 0, i =3D 0; + GA_WTSINFOA *info =3D NULL; + WTS_SESSION_INFOA *entries =3D NULL; + GuestUserList *item =3D NULL; + GuestUser *user =3D NULL; + gpointer value =3D NULL; + INT64 login =3D 0; + double login_time =3D 0; + + cache =3D g_hash_table_new(g_str_hash, g_str_equal); + + if (WTSEnumerateSessionsA(NULL, 0, 1, &entries, &count)) { + for (i =3D 0; i < count; ++i) { + buffer_size =3D 0; + info =3D NULL; + if (WTSQuerySessionInformationA( + NULL, + entries[i].SessionId, + WTSSessionInfo, + (LPSTR *)&info, + &buffer_size + )) { + + if (strlen(info->UserName) =3D=3D 0) { + WTSFreeMemory(info); + continue; + } + + login =3D info->LogonTime.QuadPart; + login -=3D W32_FT_OFFSET; + login_time =3D ((double)login) / QGA_NANOSECONDS; + + if (g_hash_table_contains(cache, info->UserName)) { + value =3D g_hash_table_lookup(cache, info->UserName); + user =3D (GuestUser *)value; + if (user->login_time > login_time) { + user->login_time =3D login_time; + } + } else { + item =3D g_new0(GuestUserList, 1); + item->value =3D g_new0(GuestUser, 1); + + item->value->user =3D g_strdup(info->UserName); + item->value->domain =3D g_strdup(info->Domain); + item->value->has_domain =3D true; + + item->value->login_time =3D login_time; + + g_hash_table_add(cache, item->value->user); + + if (!cur_item) { + head =3D cur_item =3D item; + } else { + cur_item->next =3D item; + cur_item =3D item; + } + } + } + WTSFreeMemory(info); + } + WTSFreeMemory(entries); + } + g_hash_table_destroy(cache); + return head; +#else + error_setg(err, QERR_UNSUPPORTED); + return NULL; +#endif +} diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index 0f4cba5..f25467a 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1076,3 +1076,28 @@ ## { 'command': 'guest-get-host-name', 'returns': 'GuestHostName' } + + +## +# @GuestUser: +# @user: Username +# @domain: Logon domain (windows only) +# @login-time: Time of login of this user on the computer. If multiple +# instances of the user are logged in, the earliest login tim= e is +# reported. The value is in fractional seconds since epoch ti= me. +# +# Since: 2.10 +## +{ 'struct': 'GuestUser', + 'data': { 'user': 'str', 'login-time': 'number', '*domain': 'str' } } + +## +# @guest-get-users: +# Retrieves a list of currently active users on the VM. +# +# Returns: A unique list of users. +# +# Since: 2.10 +## +{ 'command': 'guest-get-users', + 'returns': ['GuestUser'] } --=20 2.7.4 From nobody Mon Apr 29 14:50:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149316162665553.0261151252206; Tue, 25 Apr 2017 16:07:06 -0700 (PDT) Received: from localhost ([::1]:51827 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39Y1-0004UY-7m for importer@patchew.org; Tue, 25 Apr 2017 19:07:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45248) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d39W6-0003Gv-LC for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d39W3-0004Sb-GZ for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:06 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:50474 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d39W3-0004SL-Aq for qemu-devel@nongnu.org; Tue, 25 Apr 2017 19:05:03 -0400 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v3PN43jS080944 for ; Tue, 25 Apr 2017 19:05:02 -0400 Received: from e31.co.us.ibm.com (e31.co.us.ibm.com [32.97.110.149]) by mx0b-001b2d01.pphosted.com with ESMTP id 2a2ebttyxu-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 25 Apr 2017 19:05:02 -0400 Received: from localhost by e31.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Apr 2017 17:05:01 -0600 Received: from b03cxnp08025.gho.boulder.ibm.com (9.17.130.17) by e31.co.us.ibm.com (192.168.1.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Apr 2017 17:04:58 -0600 Received: from b03ledav003.gho.boulder.ibm.com (b03ledav003.gho.boulder.ibm.com [9.17.130.234]) by b03cxnp08025.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v3PN4wkL11993434; Tue, 25 Apr 2017 16:04:58 -0700 Received: from b03ledav003.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0FA146A043; Tue, 25 Apr 2017 17:04:58 -0600 (MDT) Received: from localhost (unknown [9.53.92.194]) by b03ledav003.gho.boulder.ibm.com (Postfix) with ESMTP id EE39C6A03D; Tue, 25 Apr 2017 17:04:57 -0600 (MDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 25 Apr 2017 18:04:41 -0500 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1493161481-29595-1-git-send-email-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17042523-8235-0000-0000-00000B605085 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006973; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00852450; UDB=6.00421366; IPR=6.00631288; BA=6.00005312; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015176; XFM=3.00000013; UTC=2017-04-25 23:04:59 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17042523-8236-0000-0000-00003B70B26F Message-Id: <1493161481-29595-9-git-send-email-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-04-25_16:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=3 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1704250391 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PULL 8/8] qga: Add `guest-get-timezone` command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Vinzenz Feenstra Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Vinzenz Feenstra Adds a new command `guest-get-timezone` reporting the currently configured timezone on the system. The information on what timezone is currently is configured is useful in case of Windows VMs where the offset of the hardware clock is required to have the same offset. This can be used for management systems like `oVirt` to detect the timezone difference and warn administrators of the misconfiguration. Signed-off-by: Vinzenz Feenstra Reviewed-by: Sameeh Jubran Tested-by: Sameeh Jubran * moved stub implementation to end of function for consistency Signed-off-by: Michael Roth --- qga/commands.c | 38 ++++++++++++++++++++++++++++++++++++++ qga/qapi-schema.json | 24 ++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/qga/commands.c b/qga/commands.c index 57a31bb..3333ed5 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -510,3 +510,41 @@ GuestHostName *qmp_guest_get_host_name(Error **err) } return result; } + +GuestTimezone *qmp_guest_get_timezone(Error **errp) +{ +#if GLIB_CHECK_VERSION(2, 28, 0) + GuestTimezone *info =3D NULL; + GTimeZone *tz =3D NULL; + gint64 now =3D 0; + gint32 intv =3D 0; + gchar const *name =3D NULL; + + info =3D g_new0(GuestTimezone, 1); + tz =3D g_time_zone_new_local(); + if (tz =3D=3D NULL) { + error_setg(errp, QERR_QGA_COMMAND_FAILED, + "Couldn't retrieve local timezone"); + goto error; + } + + now =3D g_get_real_time() / G_USEC_PER_SEC; + intv =3D g_time_zone_find_interval(tz, G_TIME_TYPE_UNIVERSAL, now); + info->offset =3D g_time_zone_get_offset(tz, intv); + name =3D g_time_zone_get_abbreviation(tz, intv); + if (name !=3D NULL) { + info->has_zone =3D true; + info->zone =3D g_strdup(name); + } + g_time_zone_unref(tz); + + return info; + +error: + g_free(info); + return NULL; +#else + error_setg(errp, QERR_UNSUPPORTED); + return NULL; +#endif +} diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index f25467a..5c325b1 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1101,3 +1101,27 @@ ## { 'command': 'guest-get-users', 'returns': ['GuestUser'] } + +## +# @GuestTimezone: +# +# @zone: Timezone name +# @offset: Offset to UTC in seconds, negative numbers for time zones west= of +# GMT, positive numbers for east +# +# Since: 2.10 +## +{ 'struct': 'GuestTimezone', + 'data': { '*zone': 'str', 'offset': 'int' } } + +## +# @guest-get-timezone: +# +# Retrieves the timezone information from the guest. +# +# Returns: A GuestTimezone dictionary. +# +# Since: 2.10 +## +{ 'command': 'guest-get-timezone', + 'returns': 'GuestTimezone' } --=20 2.7.4