From nobody Mon Feb 9 00:39:12 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1672936253; cv=none; d=zohomail.com; s=zohoarc; b=i7mTE6l2IyqeWx/7IoO574vE1vF5BdHFa3LVuVnfP0nkzAIj1xz504eZ+m/z+IbkS9IR6vwrKr7byVlFCN96U0RcHXjuG9PocMeB4KKrWLbyzqFommrhxUQAw37fmJo944szY9SiC3/4uZgJnRrHoYe6P/18zVMUcaiddKZ3UNc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1672936253; h=Content-Type:Content-Transfer-Encoding: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=uKLe9krqt+NTshl4QVi6cPIiOwphCiTBHUsrUw/13cg=; b=k5F7j/6NnrGw6a7QTDuQcJtsOKHzp30X1Huy/sBZ/36gDLst6LzCui3tYxEe5lNYIgXjF2oLsdTi6j7C6Iz7a9+TBa3Va0mCPcVZjIGaiGm7UPg/zA0GC/o48bJ+keqg6oW17pcKX9oh0K1iSYW6IoVo25NWwV38iONnmsRFOtM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1672936253785776.3962934815871; Thu, 5 Jan 2023 08:30:53 -0800 (PST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-38-M63YMqOxP7GkQBzbrEyOpQ-1; Thu, 05 Jan 2023 11:30:35 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 71BD129AA3BE; Thu, 5 Jan 2023 16:30:33 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5B09B4085722; Thu, 5 Jan 2023 16:30:33 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4178D19465A0; Thu, 5 Jan 2023 16:30:33 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2A93A1946589 for ; Thu, 5 Jan 2023 16:30:32 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 0C8092166B31; Thu, 5 Jan 2023 16:30:32 +0000 (UTC) Received: from speedmetal.redhat.com (ovpn-208-20.brq.redhat.com [10.40.208.20]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4655C2166B30 for ; Thu, 5 Jan 2023 16:30:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1672936252; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=uKLe9krqt+NTshl4QVi6cPIiOwphCiTBHUsrUw/13cg=; b=Cuo8lcb/lCVARNbt8a2TbGBxj2jYq9xeuhH8VIaXjezlW0ES1saYzOIbHVBFrHPq2toaUK bg0lSdhyXcHfEp0Eml91ObrxIl4xz4cnswnbDXKhc9YhLV21mBP6FpLmcYcmk02PkSR8CR MgCGKUwPSaM3+nBpdVv0QbTxhJMWTnI= X-MC-Unique: M63YMqOxP7GkQBzbrEyOpQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH 04/36] conf: virdomainobjlist: Introduce 'virDomainObjListCollectAll' Date: Thu, 5 Jan 2023 17:29:53 +0100 Message-Id: <2be6280256a10edc4071ad6431e87b537e332090.1672935969.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1672936255538100003 Content-Type: text/plain; charset="utf-8" Introduce a helper which will return a list of all domain objects inside of the list without filtering and thus without the need to lock individual members. Signed-off-by: Peter Krempa Reviewed-by: Jonathon Jongsma Reviewed-by: Pavel Hrdina --- src/conf/virdomainobjlist.c | 32 ++++++++++++++++++++------------ src/conf/virdomainobjlist.h | 4 ++++ src/libvirt_private.syms | 1 + 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/conf/virdomainobjlist.c b/src/conf/virdomainobjlist.c index 2569454ff8..4968dfcf3e 100644 --- a/src/conf/virdomainobjlist.c +++ b/src/conf/virdomainobjlist.c @@ -913,6 +913,24 @@ virDomainObjListCollectIterator(void *payload, } +void +virDomainObjListCollectAll(virDomainObjList *domlist, + virDomainObj ***vms, + size_t *nvms) +{ + struct virDomainListData data =3D { NULL, 0 }; + + virObjectRWLockRead(domlist); + data.vms =3D g_new0(virDomainObj *, virHashSize(domlist->objs)); + + virHashForEach(domlist->objs, virDomainObjListCollectIterator, &data); + virObjectRWUnlock(domlist); + + *nvms =3D data.nvms; + *vms =3D data.vms; +} + + static void virDomainObjListFilter(virDomainObj ***list, size_t *nvms, @@ -954,18 +972,8 @@ virDomainObjListCollect(virDomainObjList *domlist, virDomainObjListACLFilter filter, unsigned int flags) { - struct virDomainListData data =3D { NULL, 0 }; - - virObjectRWLockRead(domlist); - data.vms =3D g_new0(virDomainObj *, virHashSize(domlist->objs)); - - virHashForEach(domlist->objs, virDomainObjListCollectIterator, &data); - virObjectRWUnlock(domlist); - - virDomainObjListFilter(&data.vms, &data.nvms, conn, filter, flags); - - *nvms =3D data.nvms; - *vms =3D data.vms; + virDomainObjListCollectAll(domlist, vms, nvms); + virDomainObjListFilter(vms, nvms, conn, filter, flags); return 0; } diff --git a/src/conf/virdomainobjlist.h b/src/conf/virdomainobjlist.h index cfa165d56f..8c53680374 100644 --- a/src/conf/virdomainobjlist.h +++ b/src/conf/virdomainobjlist.h @@ -145,6 +145,10 @@ virDomainObjListForEach(virDomainObjList *doms, VIR_CONNECT_LIST_DOMAINS_FILTERS_SNAPSHOT | \ VIR_CONNECT_LIST_DOMAINS_FILTERS_CHECKPOINT) +void +virDomainObjListCollectAll(virDomainObjList *domlist, + virDomainObj ***vms, + size_t *nvms); int virDomainObjListCollect(virDomainObjList *doms, virConnectPtr conn, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index ae746a2d51..54a3859604 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1209,6 +1209,7 @@ virDomainMomentObjNew; # conf/virdomainobjlist.h virDomainObjListAdd; virDomainObjListCollect; +virDomainObjListCollectAll; virDomainObjListConvert; virDomainObjListExport; virDomainObjListFindByID; --=20 2.38.1