On 11/18/20 8:58 PM, Daniel Henrique Barboza wrote:
qemuProcessCreatePretendCmdPrepare() is setting the
VIR_QEMU_PROCESS_START_NEW regardless of whether this is
a migration case or not. This behavior differs from what we're
doing in qemuProcessStart(), where the flag is set only
if !migrate &&
On 11/18/20 8:58 PM, Daniel Henrique Barboza wrote:
Hi,
This is a follow up of [1] after really comprehending what I
was messing with and what I couldn't do. This version has a
shorter scope, only pSeries guests are being taken care of.
I can send a follow up to handle x86 as well depending on
Works for me on qemu-5.2.0-0.7.rc2.fc34.x86_64, libvirt
v6.10.0-61-gd8c9cc3bd0 with this series patched:
guest kernel: kernel-5.10.0-0.rc5.20201125git127c501a03d5.85.fc33.x86_64
recompiled with VIRTIO_PMEM
Steps:
1. Start VM with and :
Domain xml:
pc
bb508b28-d57b-44bd-9e9c-a134cef24b60
On 12/1/20 5:15 PM, Neal Gompa wrote:
On Tue, Dec 1, 2020 at 4:23 PM Jim Fehlig wrote:
On 12/1/20 2:17 AM, Daniel P. Berrangé wrote:
On Mon, Nov 30, 2020 at 05:28:16PM -0700, Jim Fehlig wrote:
As a normal user, 'virsh connect qemu:///system' and
'virsh connect --readonly qemu:///system'
On Tue, Dec 01, 2020 at 02:11:03PM +0100, Greg Kurz wrote:
> This property has been deprecated since QEMU 5.0 by commit 22062e54bb68.
> We only kept a legacy hack that internally converts "compat" into the
> official "max-cpu-compat" property of the pseries machine type.
>
> According to our
On 12/1/20 2:17 AM, Daniel P. Berrangé wrote:
On Mon, Nov 30, 2020 at 05:28:16PM -0700, Jim Fehlig wrote:
As a normal user, 'virsh connect qemu:///system' and
'virsh connect --readonly qemu:///system' will prompt for root password.
If the user is added to the libvirt group, only
'virsh connect
On Tue, Dec 1, 2020 at 4:23 PM Jim Fehlig wrote:
>
> On 12/1/20 2:17 AM, Daniel P. Berrangé wrote:
> > On Mon, Nov 30, 2020 at 05:28:16PM -0700, Jim Fehlig wrote:
> >> As a normal user, 'virsh connect qemu:///system' and
> >> 'virsh connect --readonly qemu:///system' will prompt for root
On 12/1/20 6:16 PM, Michal Privoznik wrote:
On 12/1/20 10:03 PM, Daniel Henrique Barboza wrote:
On 12/1/20 5:20 PM, Michal Privoznik wrote:
On 12/1/20 8:58 PM, Daniel Henrique Barboza wrote:
On 12/1/20 3:46 PM, Michal Privoznik wrote:
On 11/24/20 8:20 PM, Daniel Henrique Barboza
On Tue, Dec 01, 2020 at 10:23:57PM +0100, Paolo Bonzini wrote:
> On 01/12/20 20:35, Kevin Wolf wrote:
> > Am 01.12.2020 um 18:16 hat Paolo Bonzini geschrieben:
> > I don't think this is actually a new things. We already have types and
> > commands declared with things like 'if':
On 01/12/20 20:35, Kevin Wolf wrote:
Am 01.12.2020 um 18:16 hat Paolo Bonzini geschrieben:
I don't think this is actually a new things. We already have types and
commands declared with things like 'if': 'defined(TARGET_S390X)'.
As far as I understand, QAPI generated files are already built per
On 12/1/20 10:03 PM, Daniel Henrique Barboza wrote:
On 12/1/20 5:20 PM, Michal Privoznik wrote:
On 12/1/20 8:58 PM, Daniel Henrique Barboza wrote:
On 12/1/20 3:46 PM, Michal Privoznik wrote:
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Move 'labelsize' validation to
On 12/1/20 5:20 PM, Michal Privoznik wrote:
On 12/1/20 8:58 PM, Daniel Henrique Barboza wrote:
On 12/1/20 3:46 PM, Michal Privoznik wrote:
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Move 'labelsize' validation to virDomainMemoryDefPostParse().
Signed-off-by: Daniel Henrique
On 12/1/20 8:58 PM, Daniel Henrique Barboza wrote:
On 12/1/20 3:46 PM, Michal Privoznik wrote:
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Move 'labelsize' validation to virDomainMemoryDefPostParse().
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 43
On 12/1/20 3:46 PM, Michal Privoznik wrote:
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Move 'labelsize' validation to virDomainMemoryDefPostParse().
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 43 +-
1 file
Am 01.12.2020 um 18:16 hat Paolo Bonzini geschrieben:
> On 01/12/20 17:20, Kevin Wolf wrote:
> > Am 30.11.2020 um 20:35 hat Paolo Bonzini geschrieben:
> > > For devices it's just the practical issue that there are too many to have
> > > something like this series. For machine types the main issue
On Tue, Dec 01, 2020 at 07:38:51PM +0100, Jiri Denemark wrote:
> On Tue, Dec 01, 2020 at 17:53:30 +, Daniel P. Berrangé wrote:
> > On Tue, Dec 01, 2020 at 05:09:26PM +0100, Jiri Denemark wrote:
> > > On Tue, Dec 01, 2020 at 15:34:05 +0100, Peter Krempa wrote:
> > > > On Mon, Nov 30, 2020 at
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Register an AUTOPTR_CLEANUP_FUNC for virDomainDiskDefPtr, then
use g_autoptr() in virDomainDiskDef and virStorageEncryption
pointers to get rid of the 'cleanup' and 'error' labels.
Signed-off-by: Daniel Henrique Barboza
---
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
The 'error' label is just doing a 'return -1'.
There's also a couple of 'VIR_FREE(nodes)' calls that are happening
right before exiting on error, but 'nodes' is already set for
autocleanup. These calls can also be removed.
Signed-off-by:
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
This will modernize virDomainVideoDefParseXML() and
virDomainDefAddImplicitVideo() by removing unneeded
cleanup labels.
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 48 ++
1
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Let's register AUTOPTR_CLEANUP_FUNC for virDomainControllerDefPtr
and modernize this function, removing the 'error' label using
g_autoptr().
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 60
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
The 'error' label is just returning -1, so let's 'return -1'
directly.
Use g_autoptr() with virDomainControllerDefPtr to remove the
need to call virDomainControllerDefFree() in the error path.
There is no need to VIR_FREE(nodes) explictly
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Register a AUTOPTR_CLEANUP_FUNC for virDomainSmartcardDef and use
g_autoptr() to eliminate the 'error' label.
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 34 +++---
src/conf/domain_conf.h
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
This will open an opportunity to modernize virDomainDiskDefParseXML()
in the next patch.
Signed-off-by: Daniel Henrique Barboza
---
src/util/virstorageencryption.h | 1 +
1 file changed, 1 insertion(+)
Reviewed-by: Michal Privoznik
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
The 'video' pointer is only being freed on error path, meaning
that we're leaking it after each loop restart.
There are more opportunities for auto cleanups of virDomainVideoDef
pointers, so let's register AUTOPTR_CLEANUP_FUNC for it to use
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Move 'labelsize' validation to virDomainMemoryDefPostParse().
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 43 +-
1 file changed, 22 insertions(+), 21 deletions(-)
diff --git
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
This spares us of 2 explicit VIR_FREE() calls.
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
Reviewed-by: Michal Privoznik
Michal
On 11/24/20 8:20 PM, Daniel Henrique Barboza wrote:
Use g_autoptr() with the hash and remove the 'cleanup' label.
Signed-off-by: Daniel Henrique Barboza
---
src/conf/domain_conf.c | 15 +--
1 file changed, 5 insertions(+), 10 deletions(-)
Reviewed-by: Michal Privoznik
Michal
On Tue, Dec 01, 2020 at 17:53:30 +, Daniel P. Berrangé wrote:
> On Tue, Dec 01, 2020 at 05:09:26PM +0100, Jiri Denemark wrote:
> > On Tue, Dec 01, 2020 at 15:34:05 +0100, Peter Krempa wrote:
> > > On Mon, Nov 30, 2020 at 14:45:18 -0500, Luna Xu wrote:
> > > > Hi developers,
> > >
> > > Hi,
>
On Tue, Dec 01, 2020 at 06:16:14PM +0100, Paolo Bonzini wrote:
> On 01/12/20 17:20, Kevin Wolf wrote:
[...]
> > BlockdevOptions is about external interfaces, not about
> > implementation details. Same thing as QOM properties are external
> > interfaces, not implementation details. There may be
Hi,
> IOW, libvirt should "just work" with both iptables-legacy and
> iptables-nft - that's certainly the case on Fedora/RHEL, so I
> wonder what's broken on Debian to cause this error message.
I see, thank you! Based on the error message I wrongly assumed that
this was an intentionally forced
Hi Daniel,
Thanks for replying. Yes a reset will do if the VM gets restarted. In
this case, it makes sense to just need to implement the pause function
on shutdown in libvirt for qemu. Thanks for pointing out.
Thanks,
Luna
On Tue, Dec 1, 2020 at 12:53 PM Daniel P. Berrangé wrote:
>
> On Tue,
On Tue, Dec 01, 2020 at 05:09:26PM +0100, Jiri Denemark wrote:
> On Tue, Dec 01, 2020 at 15:34:05 +0100, Peter Krempa wrote:
> > On Mon, Nov 30, 2020 at 14:45:18 -0500, Luna Xu wrote:
> > > Hi developers,
> >
> > Hi,
> >
> > [...]
> >
> > > When I start a VM with the qemu command I can specify
Hi Jiri,
Thanks for replying. Actually the no-shutdown flag behavior in qemu is
not pausing the VM shutdown, the VM shuts down normally (like you see
the linux message saying it's powered off in the tty console, and you
can't log in again), but the qemu process stays to finish the async
On 01/12/20 17:20, Kevin Wolf wrote:
Am 30.11.2020 um 20:35 hat Paolo Bonzini geschrieben:
For devices it's just the practical issue that there are too many to have
something like this series. For machine types the main issue is that the
version-specific machine types would have to be defined
Ping
On 11/24/20 4:20 PM, Daniel Henrique Barboza wrote:
Hi,
This started as a simple NVDIMM change, then I realized there
is a Gitlab work item for it [1], so I took the extra
mile and did a bit more. I'll copy/paste here the motivation
for this kind of change, provided by Cole in [1]:
-
Glib provides g_auto(GStrv) which is in-place replacement of our
VIR_AUTOSTRINGLIST.
Signed-off-by: Michal Privoznik
---
src/conf/cpu_conf.c| 2 +-
src/conf/domain_conf.c | 2 +-
src/cpu/cpu_arm.c | 2 +-
src/libxl/xen_common.c
Now that no one uses VIR_AUTOSTRINGLIST it can be dropped.
Signed-off-by: Michal Privoznik
---
src/libvirt_private.syms | 1 -
src/util/virstring.c | 10 --
src/util/virstring.h | 9 -
3 files changed, 20 deletions(-)
diff --git a/src/libvirt_private.syms
It was only recently that I learned about g_auto(GStrv).
It's just like our VIR_AUTOSTRINGLIST.
Michal Prívozník (2):
lib: Replace VIR_AUTOSTRINGLIST with GStrv
virstring: Drop VIR_AUTOSTRINGLIST
src/conf/cpu_conf.c| 2 +-
src/conf/domain_conf.c | 2 +-
If there is an error getting info from guest agent, then the
control on qemuDomainGetGuestInfo() jumps onto 'exitagent' label
and subsequently continues on 'endagentjob'. Both labels are hit
also in success case too. The control then continues by
attempting to match fetched info (e.g. disk
On 12/1/20 4:39 PM, Ján Tomko wrote:
On a Tuesday in 2020, Michal Privoznik wrote:
If there is an error getting info from guest agent, then the
control on qemuDomainGetGuestInfo() jumps onto 'exitagent' label
and subsequently continues on 'endagentjob'. Both labels are hit
also in success
Am 30.11.2020 um 20:35 hat Paolo Bonzini geschrieben:
> On 30/11/20 19:10, Kevin Wolf wrote:
> > Am 30.11.2020 um 17:57 hat Paolo Bonzini geschrieben:
> > > The main problem is that it wouldn't extend well, if at all, to
> > > machines and devices. So those would still not be integrated into the
On Tue, Dec 01, 2020 at 15:34:05 +0100, Peter Krempa wrote:
> On Mon, Nov 30, 2020 at 14:45:18 -0500, Luna Xu wrote:
> > Hi developers,
>
> Hi,
>
> [...]
>
> > When I start a VM with the qemu command I can specify the -no-shutdown
> > flag so that my qemu process doesn't quit even if I shutdown
On a Tuesday in 2020, Andrea Bolognani wrote:
We should highlight the language bindings that are actively
maintained, keep up with the core library's development pace,
have good API coverage and are relevant to people looking to
integrate libvirt into their projects in $currentyear: based
On a Tuesday in 2020, Michal Privoznik wrote:
In a few commit back (v6.10.0-5-gb3dad96972) a new helper for
obtaining string arrays from a virJSONObject was introduced:
virJSONValueObjectGetStringArray(). I've identified three places
where it can be used instead of open coding it:
Hi Peter,
Thank you again for replying here. These are great instructions. I
will take a look into these. Thank you!
Thanks,
Luna
On Tue, Dec 1, 2020 at 9:34 AM Peter Krempa wrote:
>
> On Mon, Nov 30, 2020 at 14:45:18 -0500, Luna Xu wrote:
> > Hi developers,
>
> Hi,
>
> [...]
>
> > When I
On a Tuesday in 2020, Michal Privoznik wrote:
The virJSONValueObjectGetStringArray() function is given a @key
which is supposed to be an array inside given @object. Well, if
it's not then an error state is returned (NULL), but no error
message is set.
Signed-off-by: Michal Privoznik
---
On a Tuesday in 2020, Michal Privoznik wrote:
If there is an error getting info from guest agent, then the
control on qemuDomainGetGuestInfo() jumps onto 'exitagent' label
and subsequently continues on 'endagentjob'. Both labels are hit
also in success case, which is why there is a code that
We should highlight the language bindings that are actively
maintained, keep up with the core library's development pace,
have good API coverage and are relevant to people looking to
integrate libvirt into their projects in $currentyear: based
on these criteria, it makes sense to highlight the Go
This introduces Fedora 33 and removes some redundant packages.
Signed-off-by: Daniel P. Berrangé
---
.gitlab-ci.yml| 20 +--
ci/containers/libvirt-centos-7.Dockerfile | 15 +-
ci/containers/libvirt-centos-8.Dockerfile | 16
Signed-off-by: Daniel P. Berrangé
---
ci/containers/libvirt-centos-7.Dockerfile| 6 +-
ci/containers/libvirt-centos-8.Dockerfile| 6 +-
ci/containers/libvirt-centos-stream.Dockerfile | 6 +-
This syncs with latest state of libvirt-ci.git
Daniel P. Berrang=C3=A9 (3):
gitlab: re-generate container images from lcitool
gitlab: refresh containers with lcitool for fully minimized base
ci: replace "libvirt-" prefix with "ci-" in dockerfiles
.gitlab-ci.yml
This makes the dockerfile name match the output container name
Signed-off-by: Daniel P. Berrangé
---
.gitlab-ci.yml | 2 +-
...-centos-7.Dockerfile => ci-centos-7.Dockerfile} | 0
...-centos-8.Dockerfile => ci-centos-8.Dockerfile} | 0
...ream.Dockerfile
On 12/1/20 3:17 PM, Peter Krempa wrote:
On Tue, Dec 01, 2020 at 13:54:29 +0100, Michal Privoznik wrote:
In v6.0.0-rc1~439 (and friends) we tried to cache NUMA
capabilities because we assumed they are immutable. And to some
extent they are (NUMA hotplug is not a thing, is it). However,
our
Just to clarify, this is for 6.0.
On Tue, 1 Dec 2020 14:11:03 +0100
Greg Kurz wrote:
> This property has been deprecated since QEMU 5.0 by commit 22062e54bb68.
> We only kept a legacy hack that internally converts "compat" into the
> official "max-cpu-compat" property of the pseries machine
On a Tuesday in 2020, Michal Privoznik wrote:
On 12/1/20 2:50 AM, Tuguoyi wrote:
-Original Message-
From: Ján Tomko [mailto:jto...@redhat.com]
Sent: Tuesday, November 24, 2020 6:57 PM
To: tuguoyi (Cloud)
Cc: libvir-list@redhat.com
Subject: Re: [PATCH] qemu_conf: Fix double free problem
On a Tuesday in 2020, Greg Kurz wrote:
This property has been deprecated since QEMU 5.0 by commit 22062e54bb68.
We only kept a legacy hack that internally converts "compat" into the
official "max-cpu-compat" property of the pseries machine type.
According to our deprecation policy, we could
On Mon, Nov 30, 2020 at 14:45:18 -0500, Luna Xu wrote:
> Hi developers,
Hi,
[...]
> When I start a VM with the qemu command I can specify the -no-shutdown
> flag so that my qemu process doesn't quit even if I shutdown the VM
> from the inside (issue shutdown or halt command inside VM). The VM
On Tue, Dec 01, 2020 at 13:54:29 +0100, Michal Privoznik wrote:
> In v6.0.0-rc1~439 (and friends) we tried to cache NUMA
> capabilities because we assumed they are immutable. And to some
> extent they are (NUMA hotplug is not a thing, is it). However,
> our capabilities contain also some runtime
On Tue, Dec 01, 2020 at 13:54:29 +0100, Michal Privoznik wrote:
> In v6.0.0-rc1~439 (and friends) we tried to cache NUMA
> capabilities because we assumed they are immutable. And to some
> extent they are (NUMA hotplug is not a thing, is it). However,
> our capabilities contain also some runtime
On 11/11/20 1:57 PM, Michal Privoznik wrote:
>
Polite ping.
Michal
On 12/1/20 2:50 AM, Tuguoyi wrote:
-Original Message-
From: Ján Tomko [mailto:jto...@redhat.com]
Sent: Tuesday, November 24, 2020 6:57 PM
To: tuguoyi (Cloud)
Cc: libvir-list@redhat.com
Subject: Re: [PATCH] qemu_conf: Fix double free problem for cfg->firmwares
On a Tuesday in 2020,
This property has been deprecated since QEMU 5.0 by commit 22062e54bb68.
We only kept a legacy hack that internally converts "compat" into the
official "max-cpu-compat" property of the pseries machine type.
According to our deprecation policy, we could have removed it for QEMU 5.2
already. Do it
In v6.0.0-rc1~439 (and friends) we tried to cache NUMA
capabilities because we assumed they are immutable. And to some
extent they are (NUMA hotplug is not a thing, is it). However,
our capabilities contain also some runtime info that can change,
e.g. hugepages pool allocation sizes or total
In a few commit back (v6.10.0-5-gb3dad96972) a new helper for
obtaining string arrays from a virJSONObject was introduced:
virJSONValueObjectGetStringArray(). I've identified three places
where it can be used instead of open coding it:
qemuAgentSSHGetAuthorizedKeys(),
The virJSONValueObjectGetStringArray() function is given a @key
which is supposed to be an array inside given @object. Well, if
it's not then an error state is returned (NULL), but no error
message is set.
Signed-off-by: Michal Privoznik
---
src/util/virjson.c | 6 +-
1 file changed, 5
If there is an error getting info from guest agent, then the
control on qemuDomainGetGuestInfo() jumps onto 'exitagent' label
and subsequently continues on 'endagentjob'. Both labels are hit
also in success case, which is why there is a code that tries to
match info obtained from the guest agent
While reviewing Marc-André's patches I've noticed couple of cleanup
possible.
Michal Prívozník (3):
qemuDomainGetGuestInfo: Exit early if getting info fails
virJSONValueObjectGetStringArray: Report error if @key is not an array
qemu: Use virJSONValueObjectGetStringArray() more
On 12/1/20 8:07 AM, Marc-André Lureau wrote:
Hi
Tentative:
Reviewed-by: Michal Privoznik
This is now pushed.
Michal
Ping
On 11/18/20 4:58 PM, Daniel Henrique Barboza wrote:
Hi,
This is a follow up of [1] after really comprehending what I
was messing with and what I couldn't do. This version has a
shorter scope, only pSeries guests are being taken care of.
I can send a follow up to handle x86 as well
On Tue, Dec 01, 2020 at 09:17:01AM +, Daniel P. Berrangé wrote:
> On Mon, Nov 30, 2020 at 05:28:16PM -0700, Jim Fehlig wrote:
> > As a normal user, 'virsh connect qemu:///system' and
> > 'virsh connect --readonly qemu:///system' will prompt for root password.
> > If the user is added to the
On Tue, Dec 01, 2020 at 09:19:20 +, Daniel Berrange wrote:
> On Tue, Dec 01, 2020 at 06:52:16AM +0100, Peter Krempa wrote:
> > When reporting an issue in gitlab, the project can define a template for
> > various scenarios which are meant to guide the users to add the relevant
> > information
On Tue, Dec 01, 2020 at 06:52:17AM +0100, Peter Krempa wrote:
> Try to motivate the users to describe what they want to achieve before
> diving down into technical specifics.
>
> Signed-off-by: Peter Krempa
> ---
> .gitlab/issue_templates/feature.md | 14 ++
> 1 file changed, 14
On Tue, Dec 01, 2020 at 06:52:16AM +0100, Peter Krempa wrote:
> When reporting an issue in gitlab, the project can define a template for
> various scenarios which are meant to guide the users to add the relevant
> information the project needs to the reported issue.
>
> Add a template for a
On Mon, Nov 30, 2020 at 05:28:16PM -0700, Jim Fehlig wrote:
> As a normal user, 'virsh connect qemu:///system' and
> 'virsh connect --readonly qemu:///system' will prompt for root password.
> If the user is added to the libvirt group, only
> 'virsh connect --readonly qemu:///system' will prompt
Hi developers,
Thanks for developing and maintaining such a great tool. I'm new and
I'm trying to use the no-shutdown feature of qemu with libvirt. I've
confirmed with the user list that currently there's no such feature in
libvirt that supports what I want to do, so I'm posting here and see
if
The 6.10.0 release of both libvirt and libvirt-python is tagged and
signed tarballs and source RPMs are available at
https://libvirt.org/sources/
https://libvirt.org/sources/python/
Thanks everybody who helped with this release by sending patches,
reviewing, testing, or providing any
On Sat, Nov 21, 2020 at 2:11 AM wrote:
> From: Marc-André Lureau
>
> Hi,
>
> The following series extends virDomainGetGuestInfo to report disk
> informations
> provided by the new QGA "guest-get-disks" command in QEMU 5.2.
>
> Please review,
>
> Fixes:
>
Paolo Bonzini writes:
> On 30/11/20 16:30, Daniel P. Berrangé wrote:
>> { 'struct': 'QCryptoSecretCommon',
>>'base': 'Object',
>>'state': { 'rawdata': '*uint8_t',
>> 'rawlen': 'size_t' },
>>'data': { '*format': 'QCryptoSecretFormat',
>> '*keyid': 'str',
>>
78 matches
Mail list logo