From nobody Sat Nov 1 22:25:09 2025 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.zohomail.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 (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1509067474834479.81624109212544; Thu, 26 Oct 2017 18:24:34 -0700 (PDT) Received: from localhost ([::1]:55352 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tNu-00068j-2J for importer@patchew.org; Thu, 26 Oct 2017 21:24:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38519) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tJD-0003G7-AK for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7tJ8-0003UG-DJ for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:39 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:47644 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 1e7tJ8-0003TM-80 for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:34 -0400 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v9R1JKoG057804 for ; Thu, 26 Oct 2017 21:19:31 -0400 Received: from e16.ny.us.ibm.com (e16.ny.us.ibm.com [129.33.205.206]) by mx0b-001b2d01.pphosted.com with ESMTP id 2dustab4eb-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Thu, 26 Oct 2017 21:19:31 -0400 Received: from localhost by e16.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 26 Oct 2017 21:19:30 -0400 Received: from b01cxnp23034.gho.pok.ibm.com (9.57.198.29) by e16.ny.us.ibm.com (146.89.104.203) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 26 Oct 2017 21:19:27 -0400 Received: from b01ledav003.gho.pok.ibm.com (b01ledav003.gho.pok.ibm.com [9.57.199.108]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v9R1JRvk41615606; Fri, 27 Oct 2017 01:19:27 GMT Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3A9BDB2058; Thu, 26 Oct 2017 21:16:41 -0400 (EDT) Received: from localhost (unknown [9.80.110.224]) by b01ledav003.gho.pok.ibm.com (Postfix) with ESMTP id DFA5EB204D; Thu, 26 Oct 2017 21:16:40 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Thu, 26 Oct 2017 20:18:46 -0500 X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> References: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17102701-0024-0000-0000-000002E904FB X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007957; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000239; SDB=6.00936978; UDB=6.00472212; IPR=6.00717240; BA=6.00005660; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017732; XFM=3.00000015; UTC=2017-10-27 01:19:29 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17102701-0025-0000-0000-000045DA4FA6 Message-Id: <20171027011849.29195-2-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-10-26_11:, , 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-1707230000 definitions=main-1710270016 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/4] qga-win: don't hang if vss hold writes timeout 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, Chen Hanxiao , Tomoki Sekiyama 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: Chen Hanxiao When VM is in a heavy IO, if the command "guest-fsfreeze-freeze" is executed, VSS may timeout when trying to hold writes. Inside guest, Event ID 12298(VSS_ERROR_HOLD_WRITES_TIMEOUT) is logged in the Event Viewer. At that time, if we call AbortBackup, qga may hang forever. This patch will solve this issue. Cc: Michael Roth Cc: Tomoki Sekiyama Signed-off-by: Chen Hanxiao Signed-off-by: Michael Roth --- qga/vss-win32/requester.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp index 301762d8b1..3d9c9716c0 100644 --- a/qga/vss-win32/requester.cpp +++ b/qga/vss-win32/requester.cpp @@ -419,6 +419,16 @@ void requester_freeze(int *num_vols, ErrorSet *errset) break; } } + + if (wait_status =3D=3D WAIT_TIMEOUT) { + err_set(errset, E_FAIL, + "timeout when try to receive Frozen event from VSS provide= r"); + /* If we are here, VSS had timeout. + * Don't call AbortBackup, just return directly. + */ + goto out1; + } + if (wait_status !=3D WAIT_OBJECT_0) { err_set(errset, E_FAIL, "couldn't receive Frozen event from VSS provider"); @@ -432,6 +442,8 @@ out: if (vss_ctx.pVssbc) { vss_ctx.pVssbc->AbortBackup(); } + +out1: requester_cleanup(); CoUninitialize(); } --=20 2.11.0 From nobody Sat Nov 1 22:25:09 2025 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.zohomail.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 (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1509067282014441.61852693329524; Thu, 26 Oct 2017 18:21:22 -0700 (PDT) Received: from localhost ([::1]:55339 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tKc-0003wc-3A for importer@patchew.org; Thu, 26 Oct 2017 21:21:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38542) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tJF-0003Gu-6f for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7tJA-0003Zt-78 for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:41 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:55242 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 1e7tJA-0003YL-1v for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:36 -0400 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v9R1JGVU114607 for ; Thu, 26 Oct 2017 21:19:33 -0400 Received: from e13.ny.us.ibm.com (e13.ny.us.ibm.com [129.33.205.203]) by mx0b-001b2d01.pphosted.com with ESMTP id 2dunngw94f-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Thu, 26 Oct 2017 21:19:32 -0400 Received: from localhost by e13.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 26 Oct 2017 21:19:31 -0400 Received: from b01cxnp23032.gho.pok.ibm.com (9.57.198.27) by e13.ny.us.ibm.com (146.89.104.200) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 26 Oct 2017 21:19:28 -0400 Received: from b01ledav004.gho.pok.ibm.com (b01ledav004.gho.pok.ibm.com [9.57.199.109]) by b01cxnp23032.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v9R1JS8M37486644; Fri, 27 Oct 2017 01:19:28 GMT Received: from b01ledav004.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 66CE8112054; Thu, 26 Oct 2017 21:18:58 -0400 (EDT) Received: from localhost (unknown [9.80.110.224]) by b01ledav004.gho.pok.ibm.com (Postfix) with ESMTP id 1565011205F; Thu, 26 Oct 2017 21:18:58 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Thu, 26 Oct 2017 20:18:47 -0500 X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> References: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17102701-0008-0000-0000-000002970385 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007957; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000239; SDB=6.00936978; UDB=6.00472211; IPR=6.00717240; BA=6.00005660; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017732; XFM=3.00000015; UTC=2017-10-27 01:19:29 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17102701-0009-0000-0000-000037214593 Message-Id: <20171027011849.29195-3-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-10-26_11:, , 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-1707230000 definitions=main-1710270016 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 2/4] qga-win: Updating guest_set_time action 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: Bishara AbuHattoum , peter.maydell@linaro.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: Bishara AbuHattoum At the moment, Windows libraries don't provide a way to access RTC, so, a workaround is to use the Windows w32tm command to resync the time. Related bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=3D1183874 Signed-off-by: Bishara AbuHattoum Reviewed-by: Sameeh Jubran Signed-off-by: Michael Roth --- configure | 2 +- qga/commands-win32.c | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 03547cea6a..325b08056c 100755 --- a/configure +++ b/configure @@ -827,7 +827,7 @@ if test "$mingw32" =3D "yes" ; then sysconfdir=3D"\${prefix}" local_statedir=3D confsuffix=3D"" - libs_qga=3D"-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -liphlpapi -lnetapi32= $libs_qga" + libs_qga=3D"-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi = -lnetapi32 $libs_qga" fi =20 werror=3D"" diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 619dbd2bc2..fbd7eb7bbb 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -29,6 +29,7 @@ #endif #include #include +#include =20 #include "qga/guest-agent-core.h" #include "qga/vss-win32.h" @@ -1277,8 +1278,41 @@ void qmp_guest_set_time(bool has_time, int64_t time_= ns, Error **errp) * RTC yet: * * https://msdn.microsoft.com/en-us/library/aa908981.aspx + * + * Instead, a workaround is to use the Windows win32tm command to + * resync the time using the Windows Time service. */ - error_setg(errp, "Time argument is required on this platform"); + LPVOID msg_buffer; + DWORD ret_flags; + + HRESULT hr =3D system("w32tm /resync /nowait"); + + if (GetLastError() !=3D 0) { + strerror_s((LPTSTR) & msg_buffer, 0, errno); + error_setg(errp, "system(...) failed: %s", (LPCTSTR)msg_buffer= ); + } else if (hr !=3D 0) { + if (hr =3D=3D HRESULT_FROM_WIN32(ERROR_SERVICE_NOT_ACTIVE)) { + error_setg(errp, "Windows Time service not running on the " + "guest"); + } else { + if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, + (DWORD)hr, MAKELANGID(LANG_NEUTRAL, + SUBLANG_DEFAULT), (LPTSTR) & msg_buffer= , 0, + NULL)) { + error_setg(errp, "w32tm failed with error (0x%lx), cou= ldn'" + "t retrieve error message", hr); + } else { + error_setg(errp, "w32tm failed with error (0x%lx): %s"= , hr, + (LPCTSTR)msg_buffer); + LocalFree(msg_buffer); + } + } + } else if (!InternetGetConnectedState(&ret_flags, 0)) { + error_setg(errp, "No internet connection on guest, sync not " + "accurate"); + } return; } =20 --=20 2.11.0 From nobody Sat Nov 1 22:25:09 2025 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.zohomail.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 (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1509067392191613.880852016301; Thu, 26 Oct 2017 18:23:12 -0700 (PDT) Received: from localhost ([::1]:55347 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tMV-0005Fo-83 for importer@patchew.org; Thu, 26 Oct 2017 21:23:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38580) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tJI-0003J5-3m for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7tJD-0003eo-2d for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:44 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:38358) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e7tJC-0003dH-Pa for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:39 -0400 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v9R1JFNr069138 for ; Thu, 26 Oct 2017 21:19:34 -0400 Received: from e18.ny.us.ibm.com (e18.ny.us.ibm.com [129.33.205.208]) by mx0a-001b2d01.pphosted.com with ESMTP id 2dusba44vp-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Thu, 26 Oct 2017 21:19:33 -0400 Received: from localhost by e18.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 26 Oct 2017 21:19:32 -0400 Received: from b01cxnp23034.gho.pok.ibm.com (9.57.198.29) by e18.ny.us.ibm.com (146.89.104.205) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 26 Oct 2017 21:19:29 -0400 Received: from b01ledav005.gho.pok.ibm.com (b01ledav005.gho.pok.ibm.com [9.57.199.110]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v9R1JSZY41549844; Fri, 27 Oct 2017 01:19:28 GMT Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0B25AAE04B; Thu, 26 Oct 2017 21:20:13 -0400 (EDT) Received: from localhost (unknown [9.80.110.224]) by b01ledav005.gho.pok.ibm.com (Postfix) with ESMTP id C3C93AE034; Thu, 26 Oct 2017 21:20:12 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Thu, 26 Oct 2017 20:18:48 -0500 X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> References: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17102701-0044-0000-0000-000003A601EC X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007957; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000239; SDB=6.00936978; UDB=6.00472211; IPR=6.00717240; BA=6.00005660; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017732; XFM=3.00000015; UTC=2017-10-27 01:19:30 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17102701-0045-0000-0000-000007D50F9F Message-Id: <20171027011849.29195-4-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-10-26_11:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=8 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-1707230000 definitions=main-1710270016 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 3/4] qga: add network stats to guest-network-get-interfaces 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, ZhiPeng Lu 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: ZhiPeng Lu we can get the network interface statistics inside a virtual machine by guest-network-get-interfaces command. it is very useful for us tomonitor and analyze network traffic. Signed-off-by: ZhiPeng Lu * don't rely on sizeof(wchar[]) for wchar[] indexing * avoid camelCase variable names * fix up getline() usage * condensed commit subject line Signed-off-by: Michael Roth --- qga/commands-posix.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++= +++- qga/commands-win32.c | 50 +++++++++++++++++++++++++++++++++++ qga/qapi-schema.json | 38 ++++++++++++++++++++++++++- 3 files changed, 160 insertions(+), 2 deletions(-) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index ab0c63d931..e809e382eb 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -1643,6 +1643,67 @@ guest_find_interface(GuestNetworkInterfaceList *head, return head; } =20 +static int guest_get_network_stats(const char *name, + GuestNetworkInterfaceStat *stats) +{ + int name_len; + char const *devinfo =3D "/proc/net/dev"; + FILE *fp; + char *line =3D NULL, *colon; + size_t n =3D 0; + fp =3D fopen(devinfo, "r"); + if (!fp) { + return -1; + } + name_len =3D strlen(name); + while (getline(&line, &n, fp) !=3D -1) { + long long dummy; + long long rx_bytes; + long long rx_packets; + long long rx_errs; + long long rx_dropped; + long long tx_bytes; + long long tx_packets; + long long tx_errs; + long long tx_dropped; + char *trim_line; + trim_line =3D g_strchug(line); + if (trim_line[0] =3D=3D '\0') { + continue; + } + colon =3D strchr(trim_line, ':'); + if (!colon) { + continue; + } + if (colon - name_len =3D=3D trim_line && + strncmp(trim_line, name, name_len) =3D=3D 0) { + if (sscanf(colon + 1, + "%lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %l= ld %lld %lld %lld %lld", + &rx_bytes, &rx_packets, &rx_errs, &rx_dropped, + &dummy, &dummy, &dummy, &dummy, + &tx_bytes, &tx_packets, &tx_errs, &tx_dropped, + &dummy, &dummy, &dummy, &dummy) !=3D 16) { + continue; + } + stats->rx_bytes =3D rx_bytes; + stats->rx_packets =3D rx_packets; + stats->rx_errs =3D rx_errs; + stats->rx_dropped =3D rx_dropped; + stats->tx_bytes =3D tx_bytes; + stats->tx_packets =3D tx_packets; + stats->tx_errs =3D tx_errs; + stats->tx_dropped =3D tx_dropped; + fclose(fp); + g_free(line); + return 0; + } + } + fclose(fp); + g_free(line); + g_debug("/proc/net/dev: Interface '%s' not found", name); + return -1; +} + /* * Build information about guest interfaces */ @@ -1659,6 +1720,7 @@ GuestNetworkInterfaceList *qmp_guest_network_get_inte= rfaces(Error **errp) for (ifa =3D ifap; ifa; ifa =3D ifa->ifa_next) { GuestNetworkInterfaceList *info; GuestIpAddressList **address_list =3D NULL, *address_item =3D NULL; + GuestNetworkInterfaceStat *interface_stat =3D NULL; char addr4[INET_ADDRSTRLEN]; char addr6[INET6_ADDRSTRLEN]; int sock; @@ -1778,7 +1840,17 @@ GuestNetworkInterfaceList *qmp_guest_network_get_int= erfaces(Error **errp) =20 info->value->has_ip_addresses =3D true; =20 - + if (!info->value->has_statistics) { + interface_stat =3D g_malloc0(sizeof(*interface_stat)); + if (guest_get_network_stats(info->value->name, + interface_stat) =3D=3D -1) { + info->value->has_statistics =3D false; + g_free(interface_stat); + } else { + info->value->statistics =3D interface_stat; + info->value->has_statistics =3D true; + } + } } =20 freeifaddrs(ifap); diff --git a/qga/commands-win32.c b/qga/commands-win32.c index fbd7eb7bbb..0322188a73 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -1153,6 +1153,44 @@ out: } #endif =20 +#define INTERFACE_PATH_BUF_SZ 512 + +static DWORD get_interface_index(const char *guid) +{ + ULONG index; + DWORD status; + wchar_t wbuf[INTERFACE_PATH_BUF_SZ]; + snwprintf(wbuf, INTERFACE_PATH_BUF_SZ, L"\\device\\tcpip_%s", guid); + wbuf[INTERFACE_PATH_BUF_SZ - 1] =3D 0; + status =3D GetAdapterIndex (wbuf, &index); + if (status !=3D NO_ERROR) { + return (DWORD)~0; + } else { + return index; + } +} +static int guest_get_network_stats(const char *name, + GuestNetworkInterfaceStat *stats) +{ + DWORD if_index =3D 0; + MIB_IFROW a_mid_ifrow; + memset(&a_mid_ifrow, 0, sizeof(a_mid_ifrow)); + if_index =3D get_interface_index(name); + a_mid_ifrow.dwIndex =3D if_index; + if (NO_ERROR =3D=3D GetIfEntry(&a_mid_ifrow)) { + stats->rx_bytes =3D a_mid_ifrow.dwInOctets; + stats->rx_packets =3D a_mid_ifrow.dwInUcastPkts; + stats->rx_errs =3D a_mid_ifrow.dwInErrors; + stats->rx_dropped =3D a_mid_ifrow.dwInDiscards; + stats->tx_bytes =3D a_mid_ifrow.dwOutOctets; + stats->tx_packets =3D a_mid_ifrow.dwOutUcastPkts; + stats->tx_errs =3D a_mid_ifrow.dwOutErrors; + stats->tx_dropped =3D a_mid_ifrow.dwOutDiscards; + return 0; + } + return -1; +} + GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp) { IP_ADAPTER_ADDRESSES *adptr_addrs, *addr; @@ -1160,6 +1198,7 @@ GuestNetworkInterfaceList *qmp_guest_network_get_inte= rfaces(Error **errp) GuestNetworkInterfaceList *head =3D NULL, *cur_item =3D NULL; GuestIpAddressList *head_addr, *cur_addr; GuestNetworkInterfaceList *info; + GuestNetworkInterfaceStat *interface_stat =3D NULL; GuestIpAddressList *address_item =3D NULL; unsigned char *mac_addr; char *addr_str; @@ -1239,6 +1278,17 @@ GuestNetworkInterfaceList *qmp_guest_network_get_int= erfaces(Error **errp) info->value->has_ip_addresses =3D true; info->value->ip_addresses =3D head_addr; } + if (!info->value->has_statistics) { + interface_stat =3D g_malloc0(sizeof(*interface_stat)); + if (guest_get_network_stats(addr->AdapterName, + interface_stat) =3D=3D -1) { + info->value->has_statistics =3D false; + g_free(interface_stat); + } else { + info->value->statistics =3D interface_stat; + info->value->has_statistics =3D true; + } + } } WSACleanup(); out: diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index 90a0c8602b..17884c7c70 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -643,6 +643,38 @@ 'prefix': 'int'} } =20 ## +# @GuestNetworkInterfaceStat: +# +# @rx-bytes: total bytes received +# +# @rx-packets: total packets received +# +# @rx-errs: bad packets received +# +# @rx-dropped: receiver dropped packets +# +# @tx-bytes: total bytes transmitted +# +# @tx-packets: total packets transmitted +# +# @tx-errs: packet transmit problems +# +# @tx-dropped: dropped packets transmitted +# +# Since: 2.11 +## +{ 'struct': 'GuestNetworkInterfaceStat', + 'data': {'rx-bytes': 'uint64', + 'rx-packets': 'uint64', + 'rx-errs': 'uint64', + 'rx-dropped': 'uint64', + 'tx-bytes': 'uint64', + 'tx-packets': 'uint64', + 'tx-errs': 'uint64', + 'tx-dropped': 'uint64' + } } + +## # @GuestNetworkInterface: # # @name: The name of interface for which info are being delivered @@ -651,12 +683,16 @@ # # @ip-addresses: List of addresses assigned to @name # +# @statistics: various statistic counters related to @name +# (since 2.11) +# # Since: 1.1 ## { 'struct': 'GuestNetworkInterface', 'data': {'name': 'str', '*hardware-address': 'str', - '*ip-addresses': ['GuestIpAddress'] } } + '*ip-addresses': ['GuestIpAddress'], + '*statistics': 'GuestNetworkInterfaceStat' } } =20 ## # @guest-network-get-interfaces: --=20 2.11.0 From nobody Sat Nov 1 22:25:09 2025 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.zohomail.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 (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1509067384774709.2873847407778; Thu, 26 Oct 2017 18:23:04 -0700 (PDT) Received: from localhost ([::1]:55346 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tMQ-0005Ca-Tv for importer@patchew.org; Thu, 26 Oct 2017 21:22:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38539) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e7tJF-0003Gr-4k for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e7tJA-0003Zn-6p for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:41 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:55240 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 1e7tJA-0003YM-14 for qemu-devel@nongnu.org; Thu, 26 Oct 2017 21:19:36 -0400 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id v9R1JGFk114582 for ; Thu, 26 Oct 2017 21:19:34 -0400 Received: from e18.ny.us.ibm.com (e18.ny.us.ibm.com [129.33.205.208]) by mx0b-001b2d01.pphosted.com with ESMTP id 2dunngw95j-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Thu, 26 Oct 2017 21:19:34 -0400 Received: from localhost by e18.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 26 Oct 2017 21:19:33 -0400 Received: from b01cxnp23033.gho.pok.ibm.com (9.57.198.28) by e18.ny.us.ibm.com (146.89.104.205) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 26 Oct 2017 21:19:30 -0400 Received: from b01ledav006.gho.pok.ibm.com (b01ledav006.gho.pok.ibm.com [9.57.199.111]) by b01cxnp23033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v9R1JTIT57737470; Fri, 27 Oct 2017 01:19:29 GMT Received: from b01ledav006.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A0F07AC048; Thu, 26 Oct 2017 21:20:14 -0400 (EDT) Received: from localhost (unknown [9.80.110.224]) by b01ledav006.gho.pok.ibm.com (Postfix) with ESMTP id 5CC74AC03F; Thu, 26 Oct 2017 21:20:14 -0400 (EDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Thu, 26 Oct 2017 20:18:49 -0500 X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> References: <20171027011849.29195-1-mdroth@linux.vnet.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 x-cbid: 17102701-0044-0000-0000-000003A601EE X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007957; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000239; SDB=6.00936978; UDB=6.00472211; IPR=6.00717240; BA=6.00005660; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017732; XFM=3.00000015; UTC=2017-10-27 01:19:31 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17102701-0045-0000-0000-000007D50FA1 Message-Id: <20171027011849.29195-5-mdroth@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-10-26_11:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=3 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-1707230000 definitions=main-1710270016 Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by mx0b-001b2d01.pphosted.com id v9R1JGFk114582 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 4/4] qga-win: fix error-handling in getNameByStringSID() 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 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" In one case we misconstrue a BOOL return as an HRESULT, and in the other case we don't check the BOOL return from LookupAccountSidW() before extracting the HRESULT from GetLastError(). Both can lead to getNameByStringSID() misreporting an error. Reported-by: Chen Hanxiao Suggested-by: Tom=C3=A1=C5=A1 Golembiovsk=C3=BD Signed-off-by: Michael Roth --- qga/vss-win32/install.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp index ba7c94eb25..6713e58670 100644 --- a/qga/vss-win32/install.cpp +++ b/qga/vss-win32/install.cpp @@ -148,10 +148,15 @@ static HRESULT getNameByStringSID( DWORD domainNameLen =3D BUFFER_SIZE; wchar_t domainName[BUFFER_SIZE]; =20 - chk(ConvertStringSidToSidW(sid, &psid)); - LookupAccountSidW(NULL, psid, buffer, bufferLen, - domainName, &domainNameLen, &groupType); - hr =3D HRESULT_FROM_WIN32(GetLastError()); + if (!ConvertStringSidToSidW(sid, &psid)) { + hr =3D HRESULT_FROM_WIN32(GetLastError()); + goto out; + } + if (!LookupAccountSidW(NULL, psid, buffer, bufferLen, + domainName, &domainNameLen, &groupType)) { + hr =3D HRESULT_FROM_WIN32(GetLastError()); + /* Fall through and free psid */ + } =20 LocalFree(psid); =20 --=20 2.11.0