On Mon, Feb 08, 2021 at 08:47:03PM +0100, Martin Kletzander wrote:
On Thu, Feb 04, 2021 at 06:10:50PM +0000, Richard W.M. Jones wrote:
>The new error message is:
>
>nbd_connect_unix: connect: server backlog overflowed, see
https://bugzilla.redhat.com/1925045: Resource temporarily unavailable
>
>Fixes:
https://bugzilla.redhat.com/1925045
>---
>generator/states-connect.c | 16 ++++++++++++++++
>1 file changed, 16 insertions(+)
>
>diff --git a/generator/states-connect.c b/generator/states-connect.c
>index 03b34c7..98c26e5 100644
>--- a/generator/states-connect.c
>+++ b/generator/states-connect.c
>@@ -70,6 +70,22 @@ STATE_MACHINE {
> if (r == 0 || (r == -1 && errno == EINPROGRESS))
> return 0;
> assert (r == -1);
>+#ifdef __linux__
>+ if (errno == EAGAIN && family == AF_UNIX) {
>+ /* This can happen on Linux when connecting to a Unix domain
>+ * socket, if the server's backlog is full. Unfortunately there
>+ * is nothing good we can do on the client side when this happens
>+ * since any solution would involve sleeping or busy-waiting. The
Also thanks to the passthrough of the errno any retry procedure can be done in
the client that uses libnbd. So for both patches:
Reviewed-by: Martin Kletzander <mkletzan(a)redhat.com>
Thanks for reminding me about this one.
I have pushed it. As well as the reasons you give above, we are also
making attempts to fix the root cause in qemu. Nothing upstream yet,
but the general direction looks good.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/