This fixes an incompatibility with glibc 2.25.90
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
Pushed as a broken build fix to get CI back online
.gnulib | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gnulib b/.gnulib
index da830b5..ce4ee4c 160000
--- a/.gnulib
+++ b/.gnulib
@@ -1 +1 @@
-Subproject commit da830b5146cb553ac2a4bcfe76caeb57bda24cc3
+Subproject commit ce4ee4cbb596a9d7de2786cf8c48cf62a4edede7
--
2.9.3
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Jun 14, 2017 at 11:20:44AM +0100, Daniel P. Berrange wrote:
>This fixes an incompatibility with glibc 2.25.90
>
>Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
>---
>
>Pushed as a broken build fix to get CI back online
>
After this update the build fails for me with gcc-7.1.0 with the
following error:
In file included from util/virobject.c:28:0:
util/virobject.c: In function 'virClassNew':
util/viratomic.h:176:46: error: this condition has identical branches [-Werror=duplicated-branches]
(void)(0 ? *(atomic) ^ *(atomic) : 0); \
^
util/virobject.c:144:20: note: in expansion of macro 'virAtomicIntInc'
klass->magic = virAtomicIntInc(&magicCounter);
^~~~~~~~~~~~~~~
Does that mean that gcc does optimize our prefetch trick away
(considering I understood what that line is trying to do)? Or should we
just turn the warning off for that header file?
> .gnulib | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/.gnulib b/.gnulib
>index da830b5..ce4ee4c 160000
>--- a/.gnulib
>+++ b/.gnulib
>@@ -1 +1 @@
>-Subproject commit da830b5146cb553ac2a4bcfe76caeb57bda24cc3
>+Subproject commit ce4ee4cbb596a9d7de2786cf8c48cf62a4edede7
>--
>2.9.3
>
>--
>libvir-list mailing list
>libvir-list@redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Jun 14, 2017 at 03:27:25PM +0200, Martin Kletzander wrote:
> On Wed, Jun 14, 2017 at 11:20:44AM +0100, Daniel P. Berrange wrote:
> > This fixes an incompatibility with glibc 2.25.90
> >
> > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > ---
> >
> > Pushed as a broken build fix to get CI back online
> >
>
> After this update the build fails for me with gcc-7.1.0 with the
> following error:
>
> In file included from util/virobject.c:28:0:
> util/virobject.c: In function 'virClassNew':
> util/viratomic.h:176:46: error: this condition has identical branches [-Werror=duplicated-branches]
> (void)(0 ? *(atomic) ^ *(atomic) : 0); \
> ^
> util/virobject.c:144:20: note: in expansion of macro 'virAtomicIntInc'
> klass->magic = virAtomicIntInc(&magicCounter);
> ^~~~~~~~~~~~~~~
>
> Does that mean that gcc does optimize our prefetch trick away
> (considering I understood what that line is trying to do)? Or should we
> just turn the warning off for that header file?
Yep, "-Wduplicated-branches" appears to be a new warning flag in gcc 7.1
which gnulib turns on. There's a similar hit with mingw
../../src/util/vircommand.c: In function 'virCommandWait':
../../src/util/vircommand.c:2562:51: error: this condition has identical branches [-Werror=duplicated-branches]
*exitstatus = cmd->rawStatus ? status : WEXITSTATUS(status);
^
cc1: all warnings being treated as errors
because WEXITSTATUS(x) expands to 'x' on Win32.
We could use a pragma to turn off selectively, but I'm more
inclined to just disable this new warning flag.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Jun 14, 2017 at 02:32:41PM +0100, Daniel P. Berrange wrote:
>On Wed, Jun 14, 2017 at 03:27:25PM +0200, Martin Kletzander wrote:
>> On Wed, Jun 14, 2017 at 11:20:44AM +0100, Daniel P. Berrange wrote:
>> > This fixes an incompatibility with glibc 2.25.90
>> >
>> > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
>> > ---
>> >
>> > Pushed as a broken build fix to get CI back online
>> >
>>
>> After this update the build fails for me with gcc-7.1.0 with the
>> following error:
>>
>> In file included from util/virobject.c:28:0:
>> util/virobject.c: In function 'virClassNew':
>> util/viratomic.h:176:46: error: this condition has identical branches [-Werror=duplicated-branches]
>> (void)(0 ? *(atomic) ^ *(atomic) : 0); \
>> ^
>> util/virobject.c:144:20: note: in expansion of macro 'virAtomicIntInc'
>> klass->magic = virAtomicIntInc(&magicCounter);
>> ^~~~~~~~~~~~~~~
>>
>> Does that mean that gcc does optimize our prefetch trick away
>> (considering I understood what that line is trying to do)? Or should we
>> just turn the warning off for that header file?
>
>Yep, "-Wduplicated-branches" appears to be a new warning flag in gcc 7.1
>which gnulib turns on. There's a similar hit with mingw
>
>../../src/util/vircommand.c: In function 'virCommandWait':
>../../src/util/vircommand.c:2562:51: error: this condition has identical branches [-Werror=duplicated-branches]
> *exitstatus = cmd->rawStatus ? status : WEXITSTATUS(status);
> ^
>cc1: all warnings being treated as errors
>
>
>because WEXITSTATUS(x) expands to 'x' on Win32.
>
>We could use a pragma to turn off selectively, but I'm more
>inclined to just disable this new warning flag.
>
Well, I'm not sure how that affects the line where we actually use it
(with the atomic variables) or whether that line is not needed anymore
(if that was a fix for older compilers or something similar). But I
can send a patch for removing that warning. How about the other
warning we get when we turn off the first one? I just found out. I
think that could be turned off as well, either for some particular
places or for the whole build:
util/virtime.c: In function 'virTimeStringThenRaw':
util/virtime.c:215:9: error: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 5 and 21 [-Werror=format-truncation=]
if (snprintf(buf, VIR_TIME_STRING_BUFLEN,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"%4d-%02d-%02d %02d:%02d:%02d.%03d+0000",
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fields.tm_year, fields.tm_mon, fields.tm_mday,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fields.tm_hour, fields.tm_min, fields.tm_sec,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(int) (when % 1000)) >= VIR_TIME_STRING_BUFLEN) {
~~~~~~~~~~~~~~~~~~~~
util/virtime.c:215:9: note: using the range [-2147483648, 2147483647] for directive argument
In file included from /usr/include/stdio.h:936:0,
from ../gnulib/lib/stdio.h:43,
from util/virtime.c:36:
/usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 29 and 89 bytes into a destination of size 29
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
__bos (__s), __fmt, __va_arg_pack ());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
>
>Regards,
>Daniel
>--
>|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org -o- https://fstop138.berrange.com :|
>|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Jun 14, 2017 at 04:30:49PM +0200, Martin Kletzander wrote:
> On Wed, Jun 14, 2017 at 02:32:41PM +0100, Daniel P. Berrange wrote:
> > On Wed, Jun 14, 2017 at 03:27:25PM +0200, Martin Kletzander wrote:
> > > On Wed, Jun 14, 2017 at 11:20:44AM +0100, Daniel P. Berrange wrote:
> > > > This fixes an incompatibility with glibc 2.25.90
> > > >
> > > > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > > > ---
> > > >
> > > > Pushed as a broken build fix to get CI back online
> > > >
> > >
> > > After this update the build fails for me with gcc-7.1.0 with the
> > > following error:
> > >
> > > In file included from util/virobject.c:28:0:
> > > util/virobject.c: In function 'virClassNew':
> > > util/viratomic.h:176:46: error: this condition has identical branches [-Werror=duplicated-branches]
> > > (void)(0 ? *(atomic) ^ *(atomic) : 0); \
> > > ^
> > > util/virobject.c:144:20: note: in expansion of macro 'virAtomicIntInc'
> > > klass->magic = virAtomicIntInc(&magicCounter);
> > > ^~~~~~~~~~~~~~~
> > >
> > > Does that mean that gcc does optimize our prefetch trick away
> > > (considering I understood what that line is trying to do)? Or should we
> > > just turn the warning off for that header file?
> >
> > Yep, "-Wduplicated-branches" appears to be a new warning flag in gcc 7.1
> > which gnulib turns on. There's a similar hit with mingw
> >
> > ../../src/util/vircommand.c: In function 'virCommandWait':
> > ../../src/util/vircommand.c:2562:51: error: this condition has identical branches [-Werror=duplicated-branches]
> > *exitstatus = cmd->rawStatus ? status : WEXITSTATUS(status);
> > ^
> > cc1: all warnings being treated as errors
> >
> >
> > because WEXITSTATUS(x) expands to 'x' on Win32.
> >
> > We could use a pragma to turn off selectively, but I'm more
> > inclined to just disable this new warning flag.
> >
>
> Well, I'm not sure how that affects the line where we actually use it
> (with the atomic variables) or whether that line is not needed anymore
> (if that was a fix for older compilers or something similar). But I
> can send a patch for removing that warning. How about the other
> warning we get when we turn off the first one? I just found out. I
> think that could be turned off as well, either for some particular
> places or for the whole build:
>
> util/virtime.c: In function 'virTimeStringThenRaw':
> util/virtime.c:215:9: error: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 5 and 21 [-Werror=format-truncation=]
> if (snprintf(buf, VIR_TIME_STRING_BUFLEN,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> "%4d-%02d-%02d %02d:%02d:%02d.%03d+0000",
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> fields.tm_year, fields.tm_mon, fields.tm_mday,
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> fields.tm_hour, fields.tm_min, fields.tm_sec,
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> (int) (when % 1000)) >= VIR_TIME_STRING_BUFLEN) {
> ~~~~~~~~~~~~~~~~~~~~
> util/virtime.c:215:9: note: using the range [-2147483648, 2147483647] for directive argument
> In file included from /usr/include/stdio.h:936:0,
> from ../gnulib/lib/stdio.h:43,
> from util/virtime.c:36:
> /usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 29 and 89 bytes into a destination of size 29
> return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> __bos (__s), __fmt, __va_arg_pack ());
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I think we might just want to switch to asprintf here instead of trying to
optimize into a fixed stack allocated buffer.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Wed, Jun 14, 2017 at 03:35:39PM +0100, Daniel P. Berrange wrote:
>On Wed, Jun 14, 2017 at 04:30:49PM +0200, Martin Kletzander wrote:
>> On Wed, Jun 14, 2017 at 02:32:41PM +0100, Daniel P. Berrange wrote:
>> > On Wed, Jun 14, 2017 at 03:27:25PM +0200, Martin Kletzander wrote:
>> > > On Wed, Jun 14, 2017 at 11:20:44AM +0100, Daniel P. Berrange wrote:
>> > > > This fixes an incompatibility with glibc 2.25.90
>> > > >
>> > > > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
>> > > > ---
>> > > >
>> > > > Pushed as a broken build fix to get CI back online
>> > > >
>> > >
>> > > After this update the build fails for me with gcc-7.1.0 with the
>> > > following error:
>> > >
>> > > In file included from util/virobject.c:28:0:
>> > > util/virobject.c: In function 'virClassNew':
>> > > util/viratomic.h:176:46: error: this condition has identical branches [-Werror=duplicated-branches]
>> > > (void)(0 ? *(atomic) ^ *(atomic) : 0); \
>> > > ^
>> > > util/virobject.c:144:20: note: in expansion of macro 'virAtomicIntInc'
>> > > klass->magic = virAtomicIntInc(&magicCounter);
>> > > ^~~~~~~~~~~~~~~
>> > >
>> > > Does that mean that gcc does optimize our prefetch trick away
>> > > (considering I understood what that line is trying to do)? Or should we
>> > > just turn the warning off for that header file?
>> >
>> > Yep, "-Wduplicated-branches" appears to be a new warning flag in gcc 7.1
>> > which gnulib turns on. There's a similar hit with mingw
>> >
>> > ../../src/util/vircommand.c: In function 'virCommandWait':
>> > ../../src/util/vircommand.c:2562:51: error: this condition has identical branches [-Werror=duplicated-branches]
>> > *exitstatus = cmd->rawStatus ? status : WEXITSTATUS(status);
>> > ^
>> > cc1: all warnings being treated as errors
>> >
>> >
>> > because WEXITSTATUS(x) expands to 'x' on Win32.
>> >
>> > We could use a pragma to turn off selectively, but I'm more
>> > inclined to just disable this new warning flag.
>> >
>>
>> Well, I'm not sure how that affects the line where we actually use it
>> (with the atomic variables) or whether that line is not needed anymore
>> (if that was a fix for older compilers or something similar). But I
>> can send a patch for removing that warning. How about the other
>> warning we get when we turn off the first one? I just found out. I
>> think that could be turned off as well, either for some particular
>> places or for the whole build:
>>
>> util/virtime.c: In function 'virTimeStringThenRaw':
>> util/virtime.c:215:9: error: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 5 and 21 [-Werror=format-truncation=]
>> if (snprintf(buf, VIR_TIME_STRING_BUFLEN,
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> "%4d-%02d-%02d %02d:%02d:%02d.%03d+0000",
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> fields.tm_year, fields.tm_mon, fields.tm_mday,
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> fields.tm_hour, fields.tm_min, fields.tm_sec,
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> (int) (when % 1000)) >= VIR_TIME_STRING_BUFLEN) {
>> ~~~~~~~~~~~~~~~~~~~~
>> util/virtime.c:215:9: note: using the range [-2147483648, 2147483647] for directive argument
>> In file included from /usr/include/stdio.h:936:0,
>> from ../gnulib/lib/stdio.h:43,
>> from util/virtime.c:36:
>> /usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 29 and 89 bytes into a destination of size 29
>> return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> __bos (__s), __fmt, __va_arg_pack ());
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>I think we might just want to switch to asprintf here instead of trying to
>optimize into a fixed stack allocated buffer.
>
I wanted to do that and started rewriting it, but I found out we use
static buffers in lot of places and lot of them then use snprintf or
similar. In some cases it doesn't even make much of a sense, e.g.:
snprintf(buf, 3, "%d", var)
even this can fail. I get the reason for the warning, but I don't
really agree that it's something that is necessary to avoid, so I'm
inclining to ignoring that warning as well.
>
>Regards,
>Daniel
>--
>|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org -o- https://fstop138.berrange.com :|
>|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Thu, Jun 15, 2017 at 05:39:00PM +0200, Martin Kletzander wrote:
> On Wed, Jun 14, 2017 at 03:35:39PM +0100, Daniel P. Berrange wrote:
> > On Wed, Jun 14, 2017 at 04:30:49PM +0200, Martin Kletzander wrote:
> > > On Wed, Jun 14, 2017 at 02:32:41PM +0100, Daniel P. Berrange wrote:
> > > > On Wed, Jun 14, 2017 at 03:27:25PM +0200, Martin Kletzander wrote:
> > > > > On Wed, Jun 14, 2017 at 11:20:44AM +0100, Daniel P. Berrange wrote:
> > > > > > This fixes an incompatibility with glibc 2.25.90
> > > > > >
> > > > > > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > > > > > ---
> > > > > >
> > > > > > Pushed as a broken build fix to get CI back online
> > > > > >
> > > > >
> > > > > After this update the build fails for me with gcc-7.1.0 with the
> > > > > following error:
> > > > >
> > > > > In file included from util/virobject.c:28:0:
> > > > > util/virobject.c: In function 'virClassNew':
> > > > > util/viratomic.h:176:46: error: this condition has identical branches [-Werror=duplicated-branches]
> > > > > (void)(0 ? *(atomic) ^ *(atomic) : 0); \
> > > > > ^
> > > > > util/virobject.c:144:20: note: in expansion of macro 'virAtomicIntInc'
> > > > > klass->magic = virAtomicIntInc(&magicCounter);
> > > > > ^~~~~~~~~~~~~~~
> > > > >
> > > > > Does that mean that gcc does optimize our prefetch trick away
> > > > > (considering I understood what that line is trying to do)? Or should we
> > > > > just turn the warning off for that header file?
> > > >
> > > > Yep, "-Wduplicated-branches" appears to be a new warning flag in gcc 7.1
> > > > which gnulib turns on. There's a similar hit with mingw
> > > >
> > > > ../../src/util/vircommand.c: In function 'virCommandWait':
> > > > ../../src/util/vircommand.c:2562:51: error: this condition has identical branches [-Werror=duplicated-branches]
> > > > *exitstatus = cmd->rawStatus ? status : WEXITSTATUS(status);
> > > > ^
> > > > cc1: all warnings being treated as errors
> > > >
> > > >
> > > > because WEXITSTATUS(x) expands to 'x' on Win32.
> > > >
> > > > We could use a pragma to turn off selectively, but I'm more
> > > > inclined to just disable this new warning flag.
> > > >
> > >
> > > Well, I'm not sure how that affects the line where we actually use it
> > > (with the atomic variables) or whether that line is not needed anymore
> > > (if that was a fix for older compilers or something similar). But I
> > > can send a patch for removing that warning. How about the other
> > > warning we get when we turn off the first one? I just found out. I
> > > think that could be turned off as well, either for some particular
> > > places or for the whole build:
> > >
> > > util/virtime.c: In function 'virTimeStringThenRaw':
> > > util/virtime.c:215:9: error: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 5 and 21 [-Werror=format-truncation=]
> > > if (snprintf(buf, VIR_TIME_STRING_BUFLEN,
> > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > "%4d-%02d-%02d %02d:%02d:%02d.%03d+0000",
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > fields.tm_year, fields.tm_mon, fields.tm_mday,
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > fields.tm_hour, fields.tm_min, fields.tm_sec,
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > (int) (when % 1000)) >= VIR_TIME_STRING_BUFLEN) {
> > > ~~~~~~~~~~~~~~~~~~~~
> > > util/virtime.c:215:9: note: using the range [-2147483648, 2147483647] for directive argument
> > > In file included from /usr/include/stdio.h:936:0,
> > > from ../gnulib/lib/stdio.h:43,
> > > from util/virtime.c:36:
> > > /usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 29 and 89 bytes into a destination of size 29
> > > return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
> > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > __bos (__s), __fmt, __va_arg_pack ());
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > I think we might just want to switch to asprintf here instead of trying to
> > optimize into a fixed stack allocated buffer.
> >
>
> I wanted to do that and started rewriting it, but I found out we use
> static buffers in lot of places and lot of them then use snprintf or
> similar. In some cases it doesn't even make much of a sense, e.g.:
>
> snprintf(buf, 3, "%d", var)
>
> even this can fail. I get the reason for the warning, but I don't
> really agree that it's something that is necessary to avoid, so I'm
> inclining to ignoring that warning as well.
In that kind of scenario we should be using INT_BUFSIZE_BOUND(var)
to declare the 'buf' array, rather than hardcoding a fixed size
based on assumptions about likely max value of var.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2025 Red Hat, Inc.