From nobody Thu Nov 6 12:15:34 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; dkim=fail; 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 1540950153238717.9244676282599; Tue, 30 Oct 2018 18:42:33 -0700 (PDT) Received: from localhost ([::1]:56589 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gHfWa-0001TQ-No for importer@patchew.org; Tue, 30 Oct 2018 21:42:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60179) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gHfUc-0000JD-45 for qemu-devel@nongnu.org; Tue, 30 Oct 2018 21:40:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gHfUY-00023o-0i for qemu-devel@nongnu.org; Tue, 30 Oct 2018 21:40:22 -0400 Received: from mail-qk1-x72f.google.com ([2607:f8b0:4864:20::72f]:37478) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gHfUX-000217-Ms for qemu-devel@nongnu.org; Tue, 30 Oct 2018 21:40:17 -0400 Received: by mail-qk1-x72f.google.com with SMTP id 131so8583501qkd.4 for ; Tue, 30 Oct 2018 18:40:15 -0700 (PDT) Received: from localhost (76-251-165-188.lightspeed.austtx.sbcglobal.net. [76.251.165.188]) by smtp.gmail.com with ESMTPSA id o27sm5750025qkh.35.2018.10.30.18.40.12 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 30 Oct 2018 18:40:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NVXUYNeDrhjdeO57CII9mlPqqLk8udmn1Njwjh+9JQY=; b=Wy7nQLKUB5zOKOatUtVxl9Aa0Yox0pkyBl2bQLFlSztIL4YHTyd/cGxD3XT29RB3hv UhnPGDa8lfIqr7dnVeT9o1zM2CmFcZ0bTHGg3p9NHJPEu1oGDfoEB0YzKdi+gegw+BDU +D8PUvFf5mc90ZsszreOkcT8bcu3sqE7+FUaekDKPiiaVg2uKFczP340rHoLUOf/NIr/ /BUW+Tj70pg3QHjGFyZLqnYfQP3jmGxZJQ7DvPiyOBnI81qs/vUAyn/JuxIsQzpVEJjx sI4iT5+Ts2HbSpAgYyN7hwF3+r772s7pguxAH98Bg6AGXU12lBPYDF3zLt+OYXh0i9Zb UT9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=NVXUYNeDrhjdeO57CII9mlPqqLk8udmn1Njwjh+9JQY=; b=VmjbA1Nf/6VonuIZnSU9pIJhmxGhMflYWtDQuCCF+pQ8P2gHkIX6O/X1P81tyXVUmQ tdIdKhEK0GtDCxNfO8DtWhgaJVtW599GsVavZ7vSDvdMp4lqYih6+nmbb8uC8MYmCG5J WtjuWUpGa0BC0wv9NdHFijZLyqRH5GY3LmnemJMQ5BEnVyfZVDL49k71xaNVT44/cMFL VuGif4Lh/bxuHEKcXoj4azRfV833XyBvYrHvg+Jji4Yp+pZz6aVGxgDr35YSoByGxQ0B 1aJunIALGsWa6PN+KXHFsVTGGiLbdGhQjuxCmQKH0EC5CB85gRo9wFv/jZ3pq/0QHzQ/ SmwQ== X-Gm-Message-State: AGRZ1gI1aENp8jCuUhiHs28nGYGFh+1mMkh+PLmMhy7GLYMlHuGaxIsy DUNSPVErvmy7OjEV19JdUq6yZK4y X-Google-Smtp-Source: AJdET5cnbp0PuBsi2px6waD4S5wn+T9mzP+5Zgr+8asPBOg5uqBQtXnoioG6DrxAO8yxXLLdFtrTsw== X-Received: by 2002:a37:7041:: with SMTP id l62-v6mr906522qkc.294.1540950014016; Tue, 30 Oct 2018 18:40:14 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Tue, 30 Oct 2018 20:38:10 -0500 Message-Id: <20181031013821.24023-14-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031013821.24023-1-mdroth@linux.vnet.ibm.com> References: <20181031013821.24023-1-mdroth@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::72f Subject: [Qemu-devel] [PULL v2 13/24] qga-win: refactor disk info 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?Tom=C3=A1=C5=A1=20Golembiovsk=C3=BD?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) From: Tom=C3=A1=C5=A1 Golembiovsk=C3=BD Refactor building of disk info into a function that builds the list and a function that returns infor for single disk. This will be used in future commit that will handle multi-disk volumes. Signed-off-by: Tom=C3=A1=C5=A1 Golembiovsk=C3=BD Signed-off-by: Michael Roth --- qga/commands-win32.c | 52 +++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 2d7b56d538..21a88d31e1 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -667,20 +667,15 @@ out_free: return; } =20 -/* VSS provider works with volumes, thus there is no difference if - * the volume consist of spanned disks. Info about the first disk in the - * volume is returned for the spanned disk group (LVM) */ -static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **err= p) +static void get_single_disk_info(char *name, GuestDiskAddress *disk, + Error **errp) { - GuestDiskAddressList *list =3D NULL; - GuestDiskAddress *disk; SCSI_ADDRESS addr, *scsi_ad; DWORD len; HANDLE vol_h; Error *local_err =3D NULL; =20 scsi_ad =3D &addr; - char *name =3D g_strndup(guid, strlen(guid)-1); =20 g_debug("getting disk info for: %s", name); vol_h =3D CreateFile(name, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, @@ -690,7 +685,6 @@ static GuestDiskAddressList *build_guest_disk_info(char= *guid, Error **errp) goto err; } =20 - disk =3D g_malloc0(sizeof(*disk)); get_disk_properties(vol_h, disk, &local_err); if (local_err) { error_propagate(errp, local_err); @@ -730,20 +724,44 @@ static GuestDiskAddressList *build_guest_disk_info(ch= ar *guid, Error **errp) * information about volume. */ } =20 - list =3D g_malloc0(sizeof(*list)); - list->value =3D disk; - list->next =3D NULL; - CloseHandle(vol_h); - g_free(name); - return list; - err_close: - g_free(disk); CloseHandle(vol_h); err: + return; +} + +/* VSS provider works with volumes, thus there is no difference if + * the volume consist of spanned disks. Info about the first disk in the + * volume is returned for the spanned disk group (LVM) */ +static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **err= p) +{ + Error *local_err =3D NULL; + GuestDiskAddressList *list =3D NULL, *cur_item =3D NULL; + GuestDiskAddress *disk =3D NULL; + + /* strip final backslash */ + char *name =3D g_strdup(guid); + if (g_str_has_suffix(name, "\\")) { + name[strlen(name) - 1] =3D 0; + } + + disk =3D g_malloc0(sizeof(GuestDiskAddress)); + get_single_disk_info(name, disk, &local_err); + if (local_err) { + error_propagate(errp, local_err); + goto out; + } + + cur_item =3D g_malloc0(sizeof(*list)); + cur_item->value =3D disk; + disk =3D NULL; + list =3D cur_item; + +out: + qapi_free_GuestDiskAddress(disk); g_free(name); =20 - return NULL; + return list; } =20 #else --=20 2.17.1