From nobody Fri May 16 03:54:12 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 149969083833935.81333389990368; Mon, 10 Jul 2017 05:47:18 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C3A15BC6BB; Mon, 10 Jul 2017 12:47:16 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 973B017A95; Mon, 10 Jul 2017 12:47:16 +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 359111803B26; Mon, 10 Jul 2017 12:47:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v6ACl4q2024914 for ; Mon, 10 Jul 2017 08:47:04 -0400 Received: by smtp.corp.redhat.com (Postfix) id AF5721797E; Mon, 10 Jul 2017 12:47:04 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.41]) by smtp.corp.redhat.com (Postfix) with ESMTP id 34BFE17A86 for ; Mon, 10 Jul 2017 12:47:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C3A15BC6BB Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C3A15BC6BB From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 10 Jul 2017 14:46:48 +0200 Message-Id: <45c47fa8ccb981dc008d170d32c974cf7576f4aa.1499690733.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 09/11] qemu: introduce struct _virQEMUCapsCachePriv X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Mon, 10 Jul 2017 12:47:17 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This will store private data that will be used by following patches when switching to virFileCache. Signed-off-by: Pavel Hrdina Reviewed-by: Jiri Denemark --- src/qemu/qemu_capabilities.c | 51 ++++++++++++++++++++++++++--------------= ---- src/qemu/qemu_capspriv.h | 12 ++++++++--- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 1f3240b942..e190cfa8b1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3765,6 +3765,14 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, } =20 =20 +static void +virQEMUCapsCachePrivFree(virQEMUCapsCachePrivPtr priv) +{ + VIR_FREE(priv->libDir); + VIR_FREE(priv); +} + + /* * Parsing a doc that looks like * @@ -4253,8 +4261,7 @@ virQEMUCapsRememberCached(virQEMUCapsPtr qemuCaps, co= nst char *cacheDir) =20 static bool virQEMUCapsIsValid(virQEMUCapsPtr qemuCaps, - uid_t runUid, - gid_t runGid) + virQEMUCapsCachePrivPtr priv) { bool kvmUsable; struct stat sb; @@ -4291,7 +4298,7 @@ virQEMUCapsIsValid(virQEMUCapsPtr qemuCaps, } =20 kvmUsable =3D virFileAccessibleAs("/dev/kvm", R_OK | W_OK, - runUid, runGid) =3D=3D 0; + priv->runUid, priv->runGid) =3D=3D 0; =20 if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM) && virQEMUCapsGet(qemuCaps, QEMU_CAPS_ENABLE_KVM) && @@ -4319,8 +4326,7 @@ virQEMUCapsInitCached(virCapsPtr caps, virQEMUCapsPtr *qemuCaps, const char *binary, const char *cacheDir, - uid_t runUid, - gid_t runGid) + virQEMUCapsCachePrivPtr priv) { char *capsdir =3D NULL; char *capsfile =3D NULL; @@ -4371,7 +4377,7 @@ virQEMUCapsInitCached(virCapsPtr caps, goto discard; } =20 - if (!virQEMUCapsIsValid(qemuCapsNew, runUid, runGid)) + if (!virQEMUCapsIsValid(qemuCapsNew, priv)) goto discard; =20 VIR_DEBUG("Loaded '%s' for '%s' ctime %lld usedQMP=3D%d", @@ -5277,22 +5283,21 @@ virQEMUCapsNewForBinaryInternal(virCapsPtr caps, static virQEMUCapsPtr virQEMUCapsNewForBinary(virCapsPtr caps, const char *binary, - const char *libDir, const char *cacheDir, - uid_t runUid, - gid_t runGid) + virQEMUCapsCachePrivPtr priv) { int rv; virQEMUCapsPtr qemuCaps =3D NULL; =20 - if ((rv =3D virQEMUCapsInitCached(caps, &qemuCaps, binary, cacheDir, - runUid, runGid)) < 0) + if ((rv =3D virQEMUCapsInitCached(caps, &qemuCaps, binary, cacheDir, p= riv)) < 0) goto error; =20 if (rv =3D=3D 0) { if (!(qemuCaps =3D virQEMUCapsNewForBinaryInternal(caps, binary, - libDir, runUid, - runGid, false))) { + priv->libDir, + priv->runUid, + priv->runGid, + false))) { goto error; } =20 @@ -5366,13 +5371,17 @@ virQEMUCapsCacheNew(const char *libDir, =20 if (!(cache->binaries =3D virHashCreate(10, virObjectFreeHashData))) goto error; - if (VIR_STRDUP(cache->libDir, libDir) < 0) - goto error; if (VIR_STRDUP(cache->cacheDir, cacheDir) < 0) goto error; =20 - cache->runUid =3D runUid; - cache->runGid =3D runGid; + if (VIR_ALLOC(cache->priv) < 0) + goto error; + + if (VIR_STRDUP(cache->priv->libDir, libDir) < 0) + goto error; + + cache->priv->runUid =3D runUid; + cache->priv->runGid =3D runGid; =20 return cache; =20 @@ -5389,7 +5398,7 @@ virQEMUCapsCacheValidate(virQEMUCapsCachePtr cache, virQEMUCapsPtr *qemuCaps) { if (*qemuCaps && - !virQEMUCapsIsValid(*qemuCaps, cache->runUid, cache->runGid)) { + !virQEMUCapsIsValid(*qemuCaps, cache->priv)) { VIR_DEBUG("Cached capabilities %p no longer valid for %s", *qemuCaps, binary); virHashRemoveEntry(cache->binaries, binary); @@ -5399,8 +5408,8 @@ virQEMUCapsCacheValidate(virQEMUCapsCachePtr cache, if (!*qemuCaps) { VIR_DEBUG("Creating capabilities for %s", binary); *qemuCaps =3D virQEMUCapsNewForBinary(caps, binary, - cache->libDir, cache->cacheDir, - cache->runUid, cache->runGid); + cache->cacheDir, + cache->priv); if (*qemuCaps) { VIR_DEBUG("Caching capabilities %p for %s", *qemuCaps, binary); if (virHashAddEntry(cache->binaries, binary, *qemuCaps) < 0) { @@ -5519,7 +5528,7 @@ virQEMUCapsCacheFree(virQEMUCapsCachePtr cache) if (!cache) return; =20 - VIR_FREE(cache->libDir); + virQEMUCapsCachePrivFree(cache->priv); VIR_FREE(cache->cacheDir); virHashFree(cache->binaries); virMutexDestroy(&cache->lock); diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h index 3458fc0700..61e7c34d12 100644 --- a/src/qemu/qemu_capspriv.h +++ b/src/qemu/qemu_capspriv.h @@ -28,13 +28,19 @@ #ifndef __QEMU_CAPSPRIV_H__ # define __QEMU_CAPSPRIV_H__ =20 +struct _virQEMUCapsCachePriv { + char *libDir; + uid_t runUid; + gid_t runGid; +}; +typedef struct _virQEMUCapsCachePriv virQEMUCapsCachePriv; +typedef virQEMUCapsCachePriv *virQEMUCapsCachePrivPtr; + struct _virQEMUCapsCache { virMutex lock; virHashTablePtr binaries; - char *libDir; char *cacheDir; - uid_t runUid; - gid_t runGid; + virQEMUCapsCachePrivPtr priv; }; =20 virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps); --=20 2.13.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list