On 07/15/2016 07:46 AM, Peter Krempa wrote:
> http(s), ftp(s) and tftp use URIs for volume definitions in the JSON
> pseudo protocol so it's pretty straightforward to add support for them.
> ---
> src/util/virstoragefile.c | 34 ++
> tests/virstoragetest.c| 8
On 07/15/2016 07:46 AM, Peter Krempa wrote:
> JSON pseudo protocol for qemu allows to explicitly specify devices.
> Add convertor to the internal type.
s/convertor/converter/
> ---
> src/util/virstoragefile.c | 2 ++
> tests/virstoragetest.c| 6 ++
> 2 files changed, 8 insertions(+)
>
Le 27/07/2016 à 17:03, Michal Privoznik a écrit :
In the old days, when wireshark plugin was introduced it was
installed under /usr/lib64/wireshark/plugins/$VERSION/ while with
wireshark-2.1.0 this path has changed just to
/usr/lib64/wireshark/plugins. We should teach our spec file about
this
On Wed, Jul 27, 2016 at 08:44:53AM +0200, Martin Kletzander wrote:
> On Tue, Jul 26, 2016 at 07:12:30PM +0100, Daniel P. Berrange wrote:
> > The current LUKS support has a "luks" volume type which has
> > a "luks" encryption format.
> >
> > This partially makes sense if you consider the QEMU
On Wed, Jul 27, 2016 at 10:27:17AM +0200, Christophe Fergeau wrote:
>
> Acked-by: Christophe Fergeau
>
> (I'm assuming you can push to libvirt-glib, let me know if that's not
> the case).
Pushed. Thanks!
-- Guido
>
> Christophe
>
> On Wed, Jul 27, 2016 at 08:59:54AM
On 07/27/2016 02:28 PM, Cedric Bosdonnat wrote:
> Hey Joao,
>
> The series looks good to me, but I'm surely not expert enough to give a
> full ACK.
>
Thank you!
Joao
> On Wed, 2016-07-20 at 20:08 +0100, Joao Martins wrote:
>> Hey,
>>
>> This small series implements host cpu description in caps,
On 07/27/2016 02:42 PM, Cédric Bosdonnat wrote:
> In case of error, libxlReconnectDomain may call
> virDomainObjListRemoveLocked. However it has no local reference on
> the domain object, leading to segfault. Get a reference to the domain
> object at the start of the function and release it at
On 07/27/2016 02:42 PM, Cédric Bosdonnat wrote:
> Introduce libxl hook and use it for start, prepare, started,
> stop, stopped, migrate events.
Looks good to me with one comment and few nits. Looking at lxc and qemu drivers
virHook support seems to be similar so I am assuming this is correct. But
Contradictory to my previous patch set [1], these are not pushed yet
and thus require proper review.
1: https://www.redhat.com/archives/libvir-list/2016-July/msg01147.html
Michal Privoznik (2):
vshCmddefGetOption: Change type of opt_index
vshReadlineParse: Drop some unused variables
This function tries to look up desired option for a given parsed
command. Upon successful return it also stores option position
into passed *opt_index. Now, this variable is type of int, even
though it is never ever used to store negative value. Moreover,
the variable is set from a local variable
My compiler identified some variables that were set, but never
actually used. For instance, opts_required, and data_acomplete.
Signed-off-by: Michal Privoznik
---
tools/vsh.c | 7 ++-
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/tools/vsh.c
So as planned I tagged the Release Candidate 1 version in git and
pushed signed tarball and rpms to the usual place:
ftp://libvirt.org/libvirt/
Please give it a try, I plan to push the rc2 on Friday and if everything
goes fine have the final release on Monday or Tuesday.
Please give
On 07/27/16 10:43, Michal Privoznik wrote:
> Signed-off-by: Michal Privoznik
> ---
> src/qemu/qemu_conf.c | 13 +
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index fa9d65e..b51f36f 100644
> ---
On 07/27/16 10:43, Michal Privoznik wrote:
> In qemu, enabling this feature boils down to adding the following
> onto the command line:
>
> -global driver=cfi.pflash01,property=secure,value=on
>
> However, there are some constraints resulting from the
> implementation. For instance, System
In the old days, when wireshark plugin was introduced it was
installed under /usr/lib64/wireshark/plugins/$VERSION/ while with
wireshark-2.1.0 this path has changed just to
/usr/lib64/wireshark/plugins. We should teach our spec file about
this change.
Signed-off-by: Michal Privoznik
While trying to do an RPM, I've ran into two problems. I've
already pushed the fixes under 'build breaker rule'. I'm sending
them for completeness.
Michal Privoznik (2):
virt-wireshark: Properly substract wireshark prefix
libvirt.spec.in: Adapt to newest wireshark plugindir
libvirt.spec.in
So, when building wireshark plugin, we get the plugindir variable
from the wireshark.pc as well as prefix. Then we replace the
prefix in the plugindir with our own prefix where libvirt is
building to:
plugindir="${prefix}${plugindir#ws_prefix}"
However, as you can see, there's '$' missing in
Hi Michal,
thanks a lot for posting this. One question:
On 07/27/16 10:43, Michal Privoznik wrote:
> Since its release of 2.4.0 qemu is able to enable System
> Management Module in the firmware, or disable it. We should
> expose this capability in the XML. Unfortunately, there's no good
> way to
On Wed, Jul 27, 2016 at 08:50:42AM +0200, Erik Skultety wrote:
Since commit c4bdff19, the path to the configuration file has been constructed
in the following manner:
- if no config filename was passed to virConfLoadConfigPath, libvirt.conf was
used as default
- otherwise the filename was
On Wed, Jul 27, 2016 at 02:22:52PM +0200, Erik Skultety wrote:
The original name 'admin_uri_default' was introduced to our code by commit
dbecb87f. However, at that time we already had a separate config file for
admin library but the commit mentioned above didn't properly adjust the
config's
Ever since virDomainCreateWithFlags() was introduced by de3aadaa
[drivers: add virDomainCreateWithFlags if virDomainCreate exists], the
domain ID retrieved with virDomainGetID() was incorrect for several
drivers after virDomainCreateWithFlags() was called. The API consumer
had to look up the
On Wed, Jul 27, 2016 at 03:05:43PM +0300, Dmitry Derbyshev wrote:
> 7/27/2016 2:10 PM, Pavel Hrdina пишет:
> > On Wed, Jul 13, 2016 at 01:42:11PM +0300, Derbyshev Dmitriy wrote:
> >> From: Derbyshev Dmitry
> > There are some things that needs to be updated, but if you're
Introduce libxl hook and use it for start, prepare, started,
stop, stopped, migrate events.
---
docs/hooks.html.in | 53 ++--
src/libxl/libxl_domain.c| 75 +
src/libxl/libxl_driver.c| 24 +++
Hi there!
Here is small patchset adding hooks support to the libxl driver.
Cédric Bosdonnat (3):
libxl: add a flag to mark guests as tainted by a hook
libxl: fix segfault in libxlReconnectDomain
libxl: add hooks support
docs/hooks.html.in | 53 ++--
The migrate hook will affect the migrated guest definition. Allow
these domains be marked as tainted in the libxl driver.
---
src/libxl/libxl_domain.c | 10 ++
src/libxl/libxl_domain.h | 2 ++
2 files changed, 12 insertions(+)
diff --git a/src/libxl/libxl_domain.c
In case of error, libxlReconnectDomain may call
virDomainObjListRemoveLocked. However it has no local reference on
the domain object, leading to segfault. Get a reference to the domain
object at the start of the function and release it at the end to avoid
problems.
This commit also factorizes
On Tue, 2016-07-26 at 18:41 +0200, Ján Tomko wrote:
> [cc-ing Andrea who auto-added panic for PPC64]
>
> Should we do the same for PANIC_MODEL_PSERIES?
Thanks for the heads-up.
If we care about migrating guests to <= 1.2.16, then we
should indeed to the same for pSeries guests.
I don't see how
Hey Joao,
The series looks good to me, but I'm surely not expert enough to give a
full ACK.
--
Cedric
On Wed, 2016-07-20 at 20:08 +0100, Joao Martins wrote:
> Hey,
>
> This small series implements host cpu description in caps, by getting
> topology and xen hwcaps parsing done, followed by
On Wed, Jul 27, 2016 at 18:08:29 +0530, Shivaprasad G Bhat wrote:
> virsh maxvcpus --type kvm output is useless on PPC. Also, in
> commit e6806d79 we documented not rely on virConnectGetMaxVcpus
> output. Fix the maxvcpus to use virConnectGetDomainCapabilities
> now to make it useful. The call is
The following patch fixes the maxvcpus output on PPC64.
Earlier I tried fixing this in kvmGetMaxVcpus() which was
later decided to be document not use the virConnectGetMaxVcpus() instead
use the virConnectGetDomainCapabilities api.
I have not implemented the suggestedcpus as mentioned in my
virsh maxvcpus --type kvm output is useless on PPC. Also, in
commit e6806d79 we documented not rely on virConnectGetMaxVcpus
output. Fix the maxvcpus to use virConnectGetDomainCapabilities
now to make it useful. The call is made to use the default qemu
binary and to check for the host machine and
The original name 'admin_uri_default' was introduced to our code by commit
dbecb87f. However, at that time we already had a separate config file for
admin library but the commit mentioned above didn't properly adjust the
config's option name. The result is that when we're loading the config, we
On Wed, 2016-07-27 at 13:01 +0100, Daniel P. Berrange wrote:
> Currently we have three virt-sandbox-image commands
>
> - 'create' - downloads a template and creates qcow2
> - 'delete' - deletes template qcow2 files
> - 'run' - runs an instance of a template
>
> The 'run' command is generating
7/27/2016 2:10 PM, Pavel Hrdina пишет:
On Wed, Jul 13, 2016 at 01:42:11PM +0300, Derbyshev Dmitriy wrote:
From: Derbyshev Dmitry
There are some things that needs to be updated, but if you're OK with me
updating those issues I can push the first 5 patches for you with
There's been a forgotten fragment (copy-paste error probably) in the
virt-admin's man page referring the reader to our web page on how to construct
URIs in case of remote access, which sort of implies that we support it which
we don't at the moment, so better remove that.
Signed-off-by: Erik
Currently we have three virt-sandbox-image commands
- 'create' - downloads a template and creates qcow2
- 'delete' - deletes template qcow2 files
- 'run' - runs an instance of a template
The 'run' command is generating a transient guest which
disappears when it stops. We want to have the
7/27/2016 2:14 PM, Daniel P. Berrange пишет:
On Wed, Jul 27, 2016 at 01:09:38PM +0200, Pavel Hrdina wrote:
On Wed, Jul 13, 2016 at 01:42:17PM +0300, Derbyshev Dmitriy wrote:
From: Igor Redko
Communication with qemu monitor is time-consuming and there is
additional
On Tue, Jul 26, 2016 at 17:57:32 +0200, Ján Tomko wrote:
> On Mon, Jul 25, 2016 at 08:11:45PM +0200, Peter Krempa wrote:
> >This is a updated take based on stuff I had laying around and parts from
> >https://www.redhat.com/archives/libvir-list/2016-July/msg00872.html
> >
> >This addresses the
On Wed, Jul 27, 2016 at 12:50:07PM +0200, Peter Krempa wrote:
This part is extracted from the gluster series since Eric's comment on the
original RFC triggered a rework of certain parts.
This version allows to handle both flattened and hierarchical syntaxes (see
patch 1/10) for details.
Peter
On Thu, Jul 21, 2016 at 15:39:30 +0530, Shivaprasad G Bhat wrote:
> The cur_balloon also increases/decreases with dimm hotplug/unplug.
> To be consistent, adjust the value for coldplug too. This was inconsistently
> taken care when cur_ballon != memory to begin with. The patch fixes it
>
On Wed, Jul 27, 2016 at 01:09:38PM +0200, Pavel Hrdina wrote:
> On Wed, Jul 13, 2016 at 01:42:17PM +0300, Derbyshev Dmitriy wrote:
> > From: Igor Redko
> >
> > Communication with qemu monitor is time-consuming and there is
> > additional overhead for converting
On Wed, Jul 13, 2016 at 01:42:11PM +0300, Derbyshev Dmitriy wrote:
> From: Derbyshev Dmitry
There are some things that needs to be updated, but if you're OK with me
updating those issues I can push the first 5 patches for you with the issues
fixed.
Pavel
--
On Wed, Jul 13, 2016 at 01:42:17PM +0300, Derbyshev Dmitriy wrote:
> From: Igor Redko
>
> Communication with qemu monitor is time-consuming and there is
> additional overhead for converting qemu_binary->json->libvirt_binary.
>
> This patch tries to avoid unnecessary qmp
On Wed, Jul 13, 2016 at 01:42:16PM +0300, Derbyshev Dmitriy wrote:
> From: Derbyshev Dmitry
>
> To collect all balloon statistics for all guests it was necessary to make
> several libvirt requests. Now it's possible to get all balloon statiscs via
> single
On 07/27/2016 06:48 AM, Ján Tomko wrote:
> On Tue, Jul 26, 2016 at 10:25:41PM -0400, John Ferlan wrote:
>>
>>
>> On 07/26/2016 12:24 PM, Ján Tomko wrote:
>>> On Mon, Jul 18, 2016 at 07:37:20AM -0400, John Ferlan wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1356436
According
Allow using 'ssh' protocol in backing chains and later for disks
themselves.
---
src/libxl/libxl_conf.c| 1 +
src/qemu/qemu_command.c | 7 +++
src/qemu/qemu_driver.c| 3 +++
src/qemu/qemu_parse_command.c | 1 +
src/util/virstoragefile.c | 4 +++-
Along with the legacy URI based syntax add support for the brand-new
fully object based syntax.
---
src/util/virstoragefile.c | 108 ++
tests/virstoragetest.c| 46
2 files changed, 154 insertions(+)
diff --git
This part is extracted from the gluster series since Eric's comment on the
original RFC triggered a rework of certain parts.
This version allows to handle both flattened and hierarchical syntaxes (see
patch 1/10) for details.
Peter Krempa (10):
util: storage: Add parser for qemu's json backing
---
src/util/virstoragefile.c | 38 ++
tests/virstoragetest.c| 19 +++
2 files changed, 57 insertions(+)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 3e22b0c..fa12b28 100644
--- a/src/util/virstoragefile.c
+++
Add a modular parser that will allow to parse 'json' backing definitions
that are supported by qemu. The initial implementation adds support for
the 'file' driver.
Due to the approach qemu took to implement the JSON backing strings it's
possible to specify them in two approaches.
The object
---
src/util/virstoragefile.c | 25 +
1 file changed, 25 insertions(+)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 53ff710..169d70e 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -2746,6 +2746,30 @@
iSCSI is a bit odd in this aspect since it only supports URIs but using
the 'filename' property and does not have any alternative syntax.
---
src/util/virstoragefile.c | 21 +
1 file changed, 21 insertions(+)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
---
src/util/virstoragefile.c | 45 +
tests/virstoragetest.c| 30 ++
2 files changed, 75 insertions(+)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 66dbbef..53ff710 100644
---
JSON pseudo protocol for qemu allows to explicitly specify devices.
Add convertor to the internal type.
---
src/util/virstoragefile.c | 2 ++
tests/virstoragetest.c| 6 ++
2 files changed, 8 insertions(+)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index
It's just read.
---
src/util/virjson.c | 2 +-
src/util/virjson.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/util/virjson.c b/src/util/virjson.c
index afc98e3..b6d9a34 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -1241,7 +1241,7 @@
http(s), ftp(s) and tftp use URIs for volume definitions in the JSON
pseudo protocol so it's pretty straightforward to add support for them.
---
src/util/virstoragefile.c | 43 +++
tests/virstoragetest.c| 15 +++
2 files changed, 58
On Tue, Jul 26, 2016 at 10:25:41PM -0400, John Ferlan wrote:
On 07/26/2016 12:24 PM, Ján Tomko wrote:
On Mon, Jul 18, 2016 at 07:37:20AM -0400, John Ferlan wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1356436
According to RFC 3721 (https://www.ietf.org/rfc/rfc3721.txt), there are
two
On Wed, Jul 13, 2016 at 01:42:15PM +0300, Derbyshev Dmitriy wrote:
> From: Derbyshev Dmitry
>
> Is necessary to call it from other contexts, such as
> qemuDomainGetStatsBalloon.
>
> Signed-off-by: Derbyshev Dmitry
> ---
>
On 27/07/16 11:21, Andrea Bolognani wrote:
> On Wed, 2016-07-27 at 08:50 +0200, Erik Skultety wrote:
>> Since commit c4bdff19, the path to the configuration file has been
>> constructed
>> in the following manner:
>> - if no config filename was passed to virConfLoadConfigPath, libvirt.conf
>>
On Wed, Jul 27, 2016 at 10:23:18AM +0100, Daniel P. Berrange wrote:
On Wed, Jul 27, 2016 at 11:16:57AM +0200, Martin Kletzander wrote:
On Wed, Jul 27, 2016 at 09:29:29AM +0100, Daniel P. Berrange wrote:
> On Wed, Jul 27, 2016 at 08:44:53AM +0200, Martin Kletzander wrote:
> > On Tue, Jul 26,
On Wed, Jul 27, 2016 at 11:16:57AM +0200, Martin Kletzander wrote:
> On Wed, Jul 27, 2016 at 09:29:29AM +0100, Daniel P. Berrange wrote:
> > On Wed, Jul 27, 2016 at 08:44:53AM +0200, Martin Kletzander wrote:
> > > On Tue, Jul 26, 2016 at 07:12:30PM +0100, Daniel P. Berrange wrote:
> > > > The
On Wed, 2016-07-27 at 08:50 +0200, Erik Skultety wrote:
> Since commit c4bdff19, the path to the configuration file has been constructed
> in the following manner:
> - if no config filename was passed to virConfLoadConfigPath, libvirt.conf was
> used as default
> - otherwise the filename was
On Wed, Jul 27, 2016 at 09:29:29AM +0100, Daniel P. Berrange wrote:
On Wed, Jul 27, 2016 at 08:44:53AM +0200, Martin Kletzander wrote:
On Tue, Jul 26, 2016 at 07:12:30PM +0100, Daniel P. Berrange wrote:
> The current LUKS support has a "luks" volume type which has
> a "luks" encryption format.
On Thu, 2016-07-14 at 15:54 -0300, Ramon Medeiros wrote:
> Kimchi is a open-source interface to kvm. It runs with HTML5, simple and
> easy to manage kvm guests.
>
> Signed-off-by: Ramon Medeiros
> ---
> docs/apps.html.in | 8
> 1 file changed, 8 insertions(+)
In qemu, enabling this feature boils down to adding the following
onto the command line:
-global driver=cfi.pflash01,property=secure,value=on
However, there are some constraints resulting from the
implementation. For instance, System Management Mode (SMM) is
required to be enabled, the machine
We have UEFI enabled guests for a while now. But only recently
qemu introduced secure boot. We should reflect that in our code
too.
Michal Privoznik (5):
qemuBuildMachineCommandLine: Follow our pattern
Introduce SMM feature
Introduce @secure attribute to os loader element
qemu: Enable
This element will control secure boot implemented by some
firmwares. If the firmware used in does support the
feature we must tell it to the underlying hypervisor. However, we
can't know whether loader does support it or not just by looking
at the file. Therefore we have to have an attribute to
Since its release of 2.4.0 qemu is able to enable System
Management Module in the firmware, or disable it. We should
expose this capability in the XML. Unfortunately, there's no good
way to determine whether the binary we are talking to supports
it. I mean, if qemu's run with real machine type,
Signed-off-by: Michal Privoznik
---
src/qemu/qemu_conf.c | 13 +
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index fa9d65e..b51f36f 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@
We use 'goto cleanup' for a reason. If a function can exit at
many places but doesn't follow the pattern, it has to copy the
free code in multiple places.
Signed-off-by: Michal Privoznik
---
src/qemu/qemu_command.c | 39 ++-
1 file
On Wed, Jul 27, 2016 at 08:44:53AM +0200, Martin Kletzander wrote:
> On Tue, Jul 26, 2016 at 07:12:30PM +0100, Daniel P. Berrange wrote:
> > The current LUKS support has a "luks" volume type which has
> > a "luks" encryption format.
> >
> > This partially makes sense if you consider the QEMU
Acked-by: Christophe Fergeau
(I'm assuming you can push to libvirt-glib, let me know if that's not
the case).
Christophe
On Wed, Jul 27, 2016 at 08:59:54AM +0200, Guido Günther wrote:
> In contrast to libvirt itself all get_* methods need to prefetch the
> corresponding
On Wed, Jul 13, 2016 at 01:42:14PM +0300, Derbyshev Dmitriy wrote:
> From: Derbyshev Dmitry
>
> QEMU reports timestamp along with other memory statistics, but this
> information is not reported by libvirt statistics API.
> It could be useful to determine if the data
On Wed, Jul 13, 2016 at 01:42:13PM +0300, Derbyshev Dmitriy wrote:
> From: Derbyshev Dmitry
>
> Currently 'memtotal' in virtio drivers and qemu corresponds
> to 'available' in libvirt. Because of that we introduce libvirt 'usable'
> parameter, which maps to
On Wed, Jul 13, 2016 at 01:42:12PM +0300, Derbyshev Dmitriy wrote:
> From: Derbyshev Dmitry
>
> Description for existing balloon stats was missing for dommemstat.
>
> Signed-off-by: Derbyshev Dmitry
> ---
> tools/virsh.pod | 14
On Tue, Jul 26, 2016 at 14:28:23 -0600, Eric Blake wrote:
> On 07/15/2016 07:46 AM, Peter Krempa wrote:
> > Add a modular parser that will allow to parse 'json' backing definitions
> > that are supported by qemu. The initial implementation adds support for
> > the 'file' driver.
>
> Might be nice
On Tue, Jul 26, 2016 at 09:32:30PM +0300, Maxim Nestratov wrote:
> 26-Jul-16 18:32, Pavel Hrdina пишет:
>
> > On Sat, Jun 04, 2016 at 06:41:35PM +0300, Maxim Nestratov wrote:
> >> 01.06.2016 20:07, Derbyshev Dmitriy пишет:
> >> Makes sense, looks good to me.
> >> ACK the series.
> > Pushed now.
In contrast to libvirt itself all get_* methods need to prefetch the
corresponding information first so document this.
---
libvirt-gobject/libvirt-gobject-connection.c | 15 +++
1 file changed, 15 insertions(+)
diff --git a/libvirt-gobject/libvirt-gobject-connection.c
Since commit c4bdff19, the path to the configuration file has been constructed
in the following manner:
- if no config filename was passed to virConfLoadConfigPath, libvirt.conf was
used as default
- otherwise the filename was concatenated with
"/libvirt/libvirt%s%s.conf" which in admin case
On Tue, Jul 26, 2016 at 07:12:30PM +0100, Daniel P. Berrange wrote:
The current LUKS support has a "luks" volume type which has
a "luks" encryption format.
This partially makes sense if you consider the QEMU shorthand
syntax only requires you to specify a format=luks, and it'll
automagically
On Sat, Jul 23, 2016 at 03:47:05AM +0200, Tomasz Flendrich wrote:
From: Tomasz Flendrich
These patches delete the caching of pci, virtioSerial and ccw address sets.
I am deleting them, because they can be recalculated from the domain definition,
and there's no
On Tue, Jul 26, 2016 at 07:12:29PM +0100, Daniel P. Berrange wrote:
Refactor the virStorageFileMatchesNNN methods so that
they don't take a struct FileFormatInfo parameter, but
instead get the actual raw dat items they needs. This
will facilitate reuse in other contexts.
Signed-off-by: Daniel
82 matches
Mail list logo