Re: [PATCH 00/10] PV-IO v3

Gregory Haskins
2007-08-20T14:17:46Z

On Mon, 2007-08-20 at 07:03 -0700, Dor Laor wrote:
> >> > 2) We either need huge descriptors or some chaining
> >mechanism to
> >> > handle scatter-gather.
> >> >
> >>
> >> Or, my preference, have a small sglist in the descriptor;
> >
> >
> >Define "small" ;)
> >
> >There a certainly patterns that cannot/will-not take advantage of SG
> >(for instance, your typical network rx path), and therefore the sg
> >entries are wasted in some cases. Since they need to be (IMHO) u64,
> >they suck down at least 8 bytes a piece. Because of this I elected to
> >use the model of one pointer per descriptor, with an external
> descriptor
> >for SG. What are your thoughts on this?
>
> Using Rusty's code there is no waste.
> Each descriptor has a flag (head|next). Next flag stands for pointer to
> the
> next descriptor with u32 next index. So the waste is 4 bytes.
> Sg descriptors are chained on the same descriptor ring.

Right, so he is using a chaining mechanism and I was using a
single-pointer + external-descriptor mechanism. (Actually you can chain
with IOQ too if you want but I chose to implement the IOQNET example
with external-descriptors). I'm not sure if either way is particularly
better than the other. The important thing (IMO) is that either way you
avoid waste for the (not so uncommon) non-sg case.

You still owe me some code, BTW ;)