On Wed, Dec 09, 2020 at 07:41:23PM +0100, Eugenio Perez Martin
wrote:> On Tue, Dec 8, 2020 at 9:16 AM Stefan Hajnoczi <stefanha at
gmail.com> wrote:
> > On Fri, Nov 20, 2020 at 07:50:51PM +0100, Eugenio P?rez wrote:
> > > + while (true) {
> > > + int r;
> > > + if (virtio_queue_full(vq)) {
> > > + break;
> > > + }
> >
> > Why is this check necessary? The guest cannot provide more descriptors
> > than there is ring space. If that happens somehow then it's a
driver
> > error that is already reported in virtqueue_pop() below.
> >
>
> It's just checked because virtqueue_pop prints an error on that case,
> and there is no way to tell the difference between a regular error and
> another caused by other causes. Maybe the right thing to do is just to
> not to print that error? Caller should do the error printing in that
> case. Should we return an error code?
The reason an error is printed today is because it's a guest error that
never happens with correct guest drivers. Something is broken and the
user should know about it.
Why is "virtio_queue_full" (I already forgot what that actually means,
it's not clear whether this is referring to avail elements or used
elements) a condition that should be silently ignored in shadow vqs?
Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL:
<http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20201210/3a8dc336/attachment.sig>