From: Amit Shah <amit.shah@redhat.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: stable@kernel.org,
Virtualization List <virtualization@lists.linux-foundation.org>
Subject: Re: [PATCH] virtio: console: Don't block entire guest if host doesn't read data
Date: Tue, 19 Oct 2010 13:02:16 +0530 [thread overview]
Message-ID: <20101019073216.GA8896@amit-laptop.redhat.com> (raw)
In-Reply-To: <4CBD4754.5030504@redhat.com>
On (Tue) Oct 19 2010 [09:23:00], Hans de Goede wrote:
> >>3) This patch will cause processes filling the virtqueue fast enough to block
> >> to never wake up again, due to a missing waitqueue wakeup, see:
> >> https://bugzilla.redhat.com/show_bug.cgi?id=643750
> >
> >Doesn't happen in my testcase, but this patch shouldn't cause that
> >problem if it exists -- it's a problem that exists even now for
> >nonblocking ports. So if such a bug exists, it needs to be fixed
> >independently.
>
> First of all lets agree that this is a real problem,
Sure, got a testcase for the test-virtserial or kvm-autotest projects?
;-)
I did try it and POLLOUT gets set for me immediately when I read one
buffer from the host.
> there is simply nothing
> waking the waitqueue were fops_write (or poll) block on when buffers become
> available in out_vq, it may be hard to come up with a test case which fills
> the queue fast enough to hit this scenario, but it is very real.
Not at all.
Connect guest
Connect host
On guest, check for POLLOUT. As long as it's set, write buffers.
When POLLOUT goes off, read one buffer from host. See if POLLOUT is set
again.
Also, as I mentioned in a private chat, the fix for that problem is easy
enough.
> I agree it is an independent problem, and should be fixed in a separate
> patch, but that patch should be part of the same set and become *before*
> this one, as this patch now extends the problem to ports opened in blocking
> mode too.
Strongly disagree. This patch fixes a problem wherein blocking-mode
writes to a port freeze the entire guest. That's a much uglier problem
to have than poll not indicating a port is writable again.
> BTW, many thanks for working on this, it is appreciated :)
Sure, thanks :-)
Amit
next prev parent reply other threads:[~2010-10-19 7:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-19 5:45 [PATCH] virtio: console: Don't block entire guest if host doesn't read data Amit Shah
2010-10-19 6:55 ` Hans de Goede
2010-10-19 6:57 ` Hans de Goede
2010-10-19 7:13 ` Amit Shah
2010-10-19 7:10 ` Amit Shah
2010-10-19 7:23 ` Hans de Goede
2010-10-19 7:32 ` Amit Shah [this message]
2010-10-19 8:03 ` Hans de Goede
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101019073216.GA8896@amit-laptop.redhat.com \
--to=amit.shah@redhat.com \
--cc=hdegoede@redhat.com \
--cc=stable@kernel.org \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).