<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Sep 27, 2017 at 6:05 PM Daniel P. Berrange <<a href="mailto:berrange@redhat.com">berrange@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Sep 26, 2017 at 08:05:59PM +0300, Nir Soffer wrote:<br>
> We discovered that the entire python process get stuck for about 30<br>
> seconds when calling virDomain.getMemoryStats() if libvirt is stuck in<br>
> virConnect.getAllDomainStats() on inaccessible storage. This blocking<br>
> cause a horrible mess in oVirt.<br>
><br>
> This patches adds the standard *_ALLOW_THREADS around the call to avoid<br>
> this unwanted blocking.<br>
><br>
> Signed-off-by: Nir Soffer <<a href="mailto:nirsof@gmail.com" target="_blank">nirsof@gmail.com</a>><br>
> ---<br>
>  libvirt-override.c | 3 +++<br>
>  1 file changed, 3 insertions(+)<br>
><br>
> diff --git a/libvirt-override.c b/libvirt-override.c<br>
> index 9eba4ed..0e33afb 100644<br>
> --- a/libvirt-override.c<br>
> +++ b/libvirt-override.c<br>
> @@ -363,8 +363,11 @@ libvirt_virDomainMemoryStats(PyObject *self ATTRIBUTE_UNUSED,<br>
>          return NULL;<br>
>      domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);<br>
><br>
> +    LIBVIRT_BEGIN_ALLOW_THREADS;<br>
>      nr_stats = virDomainMemoryStats(domain, stats,<br>
>                                      VIR_DOMAIN_MEMORY_STAT_NR, 0);<br>
> +    LIBVIRT_END_ALLOW_THREADS;<br>
> +<br>
>      if (nr_stats == -1)<br>
>          return VIR_PY_NONE;<br>
<br>
Reviewed-by: Daniel P. Berrange <<a href="mailto:berrange@redhat.com" target="_blank">berrange@redhat.com</a>><br>
<br>
I'll squash in the same fix for virDomainGetDiskErrors too<br></blockquote><div><br></div><div>Cool, thanks!</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Regards,<br>
Daniel<br>
--<br>
|: <a href="https://berrange.com" rel="noreferrer" target="_blank">https://berrange.com</a>      -o-    <a href="https://www.flickr.com/photos/dberrange" rel="noreferrer" target="_blank">https://www.flickr.com/photos/dberrange</a> :|<br>
|: <a href="https://libvirt.org" rel="noreferrer" target="_blank">https://libvirt.org</a>         -o-            <a href="https://fstop138.berrange.com" rel="noreferrer" target="_blank">https://fstop138.berrange.com</a> :|<br>
|: <a href="https://entangle-photo.org" rel="noreferrer" target="_blank">https://entangle-photo.org</a>    -o-    <a href="https://www.instagram.com/dberrange" rel="noreferrer" target="_blank">https://www.instagram.com/dberrange</a> :|<br>
</blockquote></div></div>