From nobody Mon Feb 9 19:26:10 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1586526969; cv=none; d=zohomail.com; s=zohoarc; b=E9iNqfV7h0A0OLq5ScXgd23zXiDU5BfGZQJDuH8PwuDzgNSy7VCJm1+D10vOJ86h5Ed9IXZvu7YHHDQvqknCzAGWm+C7hHCJPJgMZj+hsJtCR0Lk69+NlRfETAikXnMWdwS19MK3JVVR6xBrMC/NQQmJ9fCC3Ps6SjQPLA7elR4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1586526969; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=SQu4sET0LId0zCGdnhlqxQDl8zjyxkN16vcqD1hV3uA=; b=VcXgVAz3u13t9xQjyoD8BUpD9yzsxT/fi/QQYFJuK91TyGabvF4tbsd5415Vl3QOcacFVatBvaqWqWZfI4wD/ptIurWAudfJGzG0VzdYYXzjOD92pZXESwVXUaahYcsaH10QWDPHhCp/uC6Y6+CIKCO5xIZJGZtvkGZGcWKX2Fc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1586526969835230.88061115112976; Fri, 10 Apr 2020 06:56:09 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-344-tuuTFS50NWeNSGLc0UA5KQ-1; Fri, 10 Apr 2020 09:56:05 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F1168104FB65; Fri, 10 Apr 2020 13:55:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C42C6D7689; Fri, 10 Apr 2020 13:55:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 804FF9308E; Fri, 10 Apr 2020 13:55:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03ADtdpZ022914 for ; Fri, 10 Apr 2020 09:55:39 -0400 Received: by smtp.corp.redhat.com (Postfix) id A935410EE828; Fri, 10 Apr 2020 13:55:39 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A4FCE10EE823 for ; Fri, 10 Apr 2020 13:55:39 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0CC748007AC for ; Fri, 10 Apr 2020 13:55:39 +0000 (UTC) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-202-Y-8qscrWOn2zV3QG4senhw-1; Fri, 10 Apr 2020 09:55:37 -0400 Received: by mail-wm1-f66.google.com with SMTP id z6so2818963wml.2 for ; Fri, 10 Apr 2020 06:55:36 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id c11sm3066319wrt.24.2020.04.10.06.55.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Apr 2020 06:55:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1586526968; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=SQu4sET0LId0zCGdnhlqxQDl8zjyxkN16vcqD1hV3uA=; b=e+qrqXMZf/t0EN05heWjTCa/kjNzlB7YIUtGlLT4FHnAfMejkOKxhbKn3I9QMKlhQNpNs9 Po1DITwV5l3nkrjUEQ8ovF0399qRt7RhubW3AUDo7y7++BxQ1w4crBS1vfhwhN0t8l6tdE mBd24ysBKzJi4urzk4vbPKxfRrSiEuo= X-MC-Unique: tuuTFS50NWeNSGLc0UA5KQ-1 X-MC-Unique: Y-8qscrWOn2zV3QG4senhw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hThINJ2uKJe93KDt8cvNqcdU2fDLQ/hMy+wM8E5wIaQ=; b=o9/FQSZ6n8h5fUSKvCea6ZBJv06W8SrAZxfXYHpY1zroNH2jtKcRVmfVP7buhy5UIq tN2geWrrKOHyK6BD+cjxNyaaf3aTuQX5+qmRCk2ze9DZ4WVIWZN6fpdLr3Dhn0DXeGZ9 wpLXTuOH0ydCK8nc9vyVXNdePyw81hA0DoFvIOrjqkY3wUkYlUCW8n+df68zGLAiCPqn k2GaW0v191vMe2N+CuDB8muFBfMhZFj82hs5Nd9o5JIGVIqrPyU4+n3XwJkxna8xwCyl YgAG5+sp1DebVSnWJA6s8EiuN13EgNQBJgoFefq4XZscECprh6z5ruK4Hny4r+1BCqpl tIgQ== X-Gm-Message-State: AGi0PubxfjFxl5F0fNaIOdeYKYBqkNr8L8GWmqcZoWFHDehTqduI6j/m /WVehrN2/GNpsCSHQbx/sB3G+zwEE8E= X-Google-Smtp-Source: APiQypJ2iDAuPuNPtJlWoaP7Izwxc1csAmExLZ1i5XIaVhd99yH+Mz85Uvakmn96F5hbnf2X8Vlmww== X-Received: by 2002:a1c:5448:: with SMTP id p8mr5135149wmi.173.1586526935050; Fri, 10 Apr 2020 06:55:35 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH 05/43] esx: convert virMutex to GMutex Date: Fri, 10 Apr 2020 15:54:32 +0200 Message-Id: <20200410135510.2148319-6-r4f4rfs@gmail.com> In-Reply-To: <20200410135510.2148319-1-r4f4rfs@gmail.com> References: <20200410135510.2148319-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03ADtdpZ022914 X-loop: libvir-list@redhat.com Cc: Rafael Fonseca X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Rafael Fonseca --- src/esx/esx_stream.c | 25 +++++++--------- src/esx/esx_vi.c | 68 +++++++++++++++----------------------------- src/esx/esx_vi.h | 6 ++-- 3 files changed, 36 insertions(+), 63 deletions(-) diff --git a/src/esx/esx_stream.c b/src/esx/esx_stream.c index fe3c42ae02..474c0f4739 100644 --- a/src/esx/esx_stream.c +++ b/src/esx/esx_stream.c @@ -203,6 +203,7 @@ esxStreamSend(virStreamPtr stream, const char *data, si= ze_t nbytes) int result =3D -1; esxStreamPrivate *priv =3D stream->privateData; int status; + g_autoptr(GMutexLocker) locker =3D NULL; =20 if (nbytes =3D=3D 0) return 0; @@ -217,7 +218,7 @@ esxStreamSend(virStreamPtr stream, const char *data, si= ze_t nbytes) return -1; } =20 - virMutexLock(&priv->curl->lock); + locker =3D g_mutex_locker_new(&priv->curl->lock); =20 priv->buffer =3D (char *)data; priv->buffer_size =3D nbytes; @@ -225,7 +226,7 @@ esxStreamSend(virStreamPtr stream, const char *data, si= ze_t nbytes) =20 if (stream->flags & VIR_STREAM_NONBLOCK) { if (esxStreamTransfer(priv, false) < 0) - goto cleanup; + return -1; =20 if (priv->buffer_used < priv->buffer_size) result =3D priv->buffer_size - priv->buffer_used; @@ -236,7 +237,7 @@ esxStreamSend(virStreamPtr stream, const char *data, si= ze_t nbytes) status =3D esxStreamTransfer(priv, true); =20 if (status < 0) - goto cleanup; + return -1; =20 if (status > 0) break; @@ -245,9 +246,6 @@ esxStreamSend(virStreamPtr stream, const char *data, si= ze_t nbytes) result =3D priv->buffer_size - priv->buffer_used; } =20 - cleanup: - virMutexUnlock(&priv->curl->lock); - return result; } =20 @@ -260,6 +258,7 @@ esxStreamRecvFlags(virStreamPtr stream, int result =3D -1; esxStreamPrivate *priv =3D stream->privateData; int status; + g_autoptr(GMutexLocker) locker =3D NULL; =20 virCheckFlags(0, -1); =20 @@ -276,7 +275,7 @@ esxStreamRecvFlags(virStreamPtr stream, return -1; } =20 - virMutexLock(&priv->curl->lock); + locker =3D g_mutex_locker_new(&priv->curl->lock); =20 priv->buffer =3D data; priv->buffer_size =3D nbytes; @@ -296,7 +295,7 @@ esxStreamRecvFlags(virStreamPtr stream, result =3D priv->buffer_used; } else if (stream->flags & VIR_STREAM_NONBLOCK) { if (esxStreamTransfer(priv, false) < 0) - goto cleanup; + return -1; =20 if (priv->buffer_used > 0) result =3D priv->buffer_used; @@ -307,7 +306,7 @@ esxStreamRecvFlags(virStreamPtr stream, status =3D esxStreamTransfer(priv, true); =20 if (status < 0) - goto cleanup; + return -1; =20 if (status > 0) break; @@ -316,9 +315,6 @@ esxStreamRecvFlags(virStreamPtr stream, result =3D priv->buffer_used; } =20 - cleanup: - virMutexUnlock(&priv->curl->lock); - return result; } =20 @@ -346,11 +342,12 @@ esxStreamClose(virStreamPtr stream, bool finish) { int result =3D 0; esxStreamPrivate *priv =3D stream->privateData; + g_autoptr(GMutexLocker) locker =3D NULL; =20 if (!priv) return 0; =20 - virMutexLock(&priv->curl->lock); + locker =3D g_mutex_locker_new(&priv->curl->lock); =20 if (finish && priv->backlog_used > 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -360,8 +357,6 @@ esxStreamClose(virStreamPtr stream, bool finish) =20 stream->privateData =3D NULL; =20 - virMutexUnlock(&priv->curl->lock); - esxFreeStreamPrivate(&priv); =20 return result; diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c index 16690edfbe..ed6c6c28cd 100644 --- a/src/esx/esx_vi.c +++ b/src/esx/esx_vi.c @@ -112,7 +112,7 @@ ESX_VI__TEMPLATE__FREE(CURL, if (item->headers) curl_slist_free_all(item->headers); =20 - virMutexDestroy(&item->lock); + g_mutex_clear(&item->lock); }) =20 static size_t @@ -356,11 +356,7 @@ esxVI_CURL_Connect(esxVI_CURL *curl, esxUtil_ParsedUri= *parsedUri) parsedUri->proxy_port); } =20 - if (virMutexInit(&curl->lock) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Could not initialize CURL mutex")); - return -1; - } + g_mutex_init(&curl->lock); =20 return 0; } @@ -392,7 +388,7 @@ esxVI_CURL_Download(esxVI_CURL *curl, const char *url, = char **content, range =3D g_strdup_printf("%llu-", offset); } =20 - virMutexLock(&curl->lock); + g_mutex_lock(&curl->lock); =20 curl_easy_setopt(curl->handle, CURLOPT_URL, url); curl_easy_setopt(curl->handle, CURLOPT_RANGE, range); @@ -402,7 +398,7 @@ esxVI_CURL_Download(esxVI_CURL *curl, const char *url, = char **content, =20 responseCode =3D esxVI_CURL_Perform(curl, url); =20 - virMutexUnlock(&curl->lock); + g_mutex_unlock(&curl->lock); =20 if (responseCode < 0) { goto cleanup; @@ -433,14 +429,13 @@ int esxVI_CURL_Upload(esxVI_CURL *curl, const char *url, const char *content) { int responseCode =3D 0; + g_autoptr(GMutexLocker) locker =3D g_mutex_locker_new(&curl->lock); =20 if (!content) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument")= ); return -1; } =20 - virMutexLock(&curl->lock); - curl_easy_setopt(curl->handle, CURLOPT_URL, url); curl_easy_setopt(curl->handle, CURLOPT_RANGE, NULL); curl_easy_setopt(curl->handle, CURLOPT_READDATA, &content); @@ -449,8 +444,6 @@ esxVI_CURL_Upload(esxVI_CURL *curl, const char *url, co= nst char *content) =20 responseCode =3D esxVI_CURL_Perform(curl, url); =20 - virMutexUnlock(&curl->lock); - if (responseCode < 0) { return -1; } else if (responseCode !=3D 200 && responseCode !=3D 201) { @@ -494,7 +487,7 @@ esxVI_SharedCURL_Lock(CURL *handle G_GNUC_UNUSED, curl_= lock_data data, return; } =20 - virMutexLock(&shared->locks[i]); + g_mutex_lock(&shared->locks[i]); } =20 static void @@ -522,7 +515,7 @@ esxVI_SharedCURL_Unlock(CURL *handle G_GNUC_UNUSED, cur= l_lock_data data, return; } =20 - virMutexUnlock(&shared->locks[i]); + g_mutex_unlock(&shared->locks[i]); } =20 /* esxVI_SharedCURL_Alloc */ @@ -543,7 +536,7 @@ ESX_VI__TEMPLATE__FREE(SharedCURL, curl_share_cleanup(item->handle); =20 for (i =3D 0; i < G_N_ELEMENTS(item->locks); ++i) - virMutexDestroy(&item->locks[i]); + g_mutex_clear(&item->locks[i]); }) =20 int @@ -583,22 +576,18 @@ esxVI_SharedCURL_Add(esxVI_SharedCURL *shared, esxVI_= CURL *curl) CURL_LOCK_DATA_DNS); =20 for (i =3D 0; i < G_N_ELEMENTS(shared->locks); ++i) { - if (virMutexInit(&shared->locks[i]) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Could not initialize a CURL (share) mute= x")); - return -1; - } + g_mutex_init(&shared->locks[i]); } } =20 - virMutexLock(&curl->lock); + g_mutex_lock(&curl->lock); =20 curl_easy_setopt(curl->handle, CURLOPT_SHARE, shared->handle); =20 curl->shared =3D shared; ++shared->count; =20 - virMutexUnlock(&curl->lock); + g_mutex_unlock(&curl->lock); =20 return 0; } @@ -606,6 +595,8 @@ esxVI_SharedCURL_Add(esxVI_SharedCURL *shared, esxVI_CU= RL *curl) int esxVI_SharedCURL_Remove(esxVI_SharedCURL *shared, esxVI_CURL *curl) { + g_autoptr(GMutexLocker) locker =3D g_mutex_locker_new(&curl->lock); + if (!curl->handle) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Cannot unshare uninitialized CURL handle")); @@ -623,15 +614,11 @@ esxVI_SharedCURL_Remove(esxVI_SharedCURL *shared, esx= VI_CURL *curl) return -1; } =20 - virMutexLock(&curl->lock); - curl_easy_setopt(curl->handle, CURLOPT_SHARE, NULL); =20 curl->shared =3D NULL; --shared->count; =20 - virMutexUnlock(&curl->lock); - return 0; } =20 @@ -661,6 +648,8 @@ ESX_VI__TEMPLATE__FREE(MultiCURL, int esxVI_MultiCURL_Add(esxVI_MultiCURL *multi, esxVI_CURL *curl) { + g_autoptr(GMutexLocker) locker =3D g_mutex_locker_new(&curl->lock); + if (!curl->handle) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Cannot add uninitialized CURL handle to a multi = handle")); @@ -684,21 +673,19 @@ esxVI_MultiCURL_Add(esxVI_MultiCURL *multi, esxVI_CUR= L *curl) =20 } =20 - virMutexLock(&curl->lock); - curl_multi_add_handle(multi->handle, curl->handle); =20 curl->multi =3D multi; ++multi->count; =20 - virMutexUnlock(&curl->lock); - return 0; } =20 int esxVI_MultiCURL_Remove(esxVI_MultiCURL *multi, esxVI_CURL *curl) { + g_autoptr(GMutexLocker) locker =3D g_mutex_locker_new(&curl->lock); + if (!curl->handle) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Cannot remove uninitialized CURL handle from a " @@ -718,15 +705,11 @@ esxVI_MultiCURL_Remove(esxVI_MultiCURL *multi, esxVI_= CURL *curl) return -1; } =20 - virMutexLock(&curl->lock); - curl_multi_remove_handle(multi->handle, curl->handle); =20 curl->multi =3D NULL; --multi->count; =20 - virMutexUnlock(&curl->lock); - return 0; } =20 @@ -809,7 +792,7 @@ ESX_VI__TEMPLATE__ALLOC(Context) ESX_VI__TEMPLATE__FREE(Context, { if (item->sessionLock) - virMutexDestroy(item->sessionLock); + g_mutex_clear(item->sessionLock); =20 esxVI_CURL_Free(&item->curl); VIR_FREE(item->url); @@ -870,11 +853,7 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *= url, goto cleanup; =20 =20 - if (virMutexInit(ctx->sessionLock) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("Could not initialize session mutex")); - goto cleanup; - } + g_mutex_init(ctx->sessionLock); =20 if (esxVI_RetrieveServiceContent(ctx, &ctx->service) < 0) goto cleanup; @@ -1262,7 +1241,7 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char = *methodName, if (esxVI_Response_Alloc(response) < 0) return -1; =20 - virMutexLock(&ctx->curl->lock); + g_mutex_lock(&ctx->curl->lock); =20 curl_easy_setopt(ctx->curl->handle, CURLOPT_URL, ctx->url); curl_easy_setopt(ctx->curl->handle, CURLOPT_RANGE, NULL); @@ -1273,7 +1252,7 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char = *methodName, =20 (*response)->responseCode =3D esxVI_CURL_Perform(ctx->curl, ctx->url); =20 - virMutexUnlock(&ctx->curl->lock); + g_mutex_unlock(&ctx->curl->lock); =20 if ((*response)->responseCode < 0) goto cleanup; @@ -1908,13 +1887,14 @@ esxVI_EnsureSession(esxVI_Context *ctx) esxVI_DynamicProperty *dynamicProperty =3D NULL; esxVI_UserSession *currentSession =3D NULL; char *escapedPassword =3D NULL; + g_autoptr(GMutexLocker) locker =3D NULL; =20 if (!ctx->sessionLock) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid call, no m= utex")); return -1; } =20 - virMutexLock(ctx->sessionLock); + locker =3D g_mutex_locker_new(ctx->sessionLock); =20 if (!ctx->session) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid call, no s= ession")); @@ -1969,8 +1949,6 @@ esxVI_EnsureSession(esxVI_Context *ctx) result =3D 0; =20 cleanup: - virMutexUnlock(ctx->sessionLock); - VIR_FREE(escapedPassword); esxVI_String_Free(&propertyNameList); esxVI_ObjectContent_Free(&sessionManager); diff --git a/src/esx/esx_vi.h b/src/esx/esx_vi.h index b960c0900a..949f90a43d 100644 --- a/src/esx/esx_vi.h +++ b/src/esx/esx_vi.h @@ -115,7 +115,7 @@ struct _esxVI_ParsedHostCpuIdInfo { =20 struct _esxVI_CURL { CURL *handle; - virMutex lock; + GMutex lock; struct curl_slist *headers; char error[CURL_ERROR_SIZE]; esxVI_SharedCURL *shared; @@ -137,7 +137,7 @@ int esxVI_CURL_Upload(esxVI_CURL *curl, const char *url= , const char *content); =20 struct _esxVI_SharedCURL { CURLSH *handle; - virMutex locks[3]; /* share, cookie, dns */ + GMutex locks[3]; /* share, cookie, dns */ size_t count; /* number of added easy handle */ }; =20 @@ -184,7 +184,7 @@ struct _esxVI_Context { esxVI_ProductLine productLine; unsigned long productVersion; /* =3D 1000000 * major + 1000 * minor + = micro */ esxVI_UserSession *session; /* ... except the session ... */ - virMutexPtr sessionLock; /* ... that is protected by this mutex */ + GMutex *sessionLock; /* ... that is protected by this mutex */ esxVI_Datacenter *datacenter; char *datacenterPath; /* including folders */ esxVI_ComputeResource *computeResource; --=20 2.25.2