Re: Is: SKB_MAX_LEN bites again. Was: Re: bug disabling guest interface

Ian Campbell
Tue, 12 Mar 2013 15:08:55 -0000

On Tue, 2013-03-12 at 15:05 +0000, Steven Haigh wrote:
> On 03/13/2013 01:56 AM, Ian Campbell wrote:
> > On Tue, 2013-03-12 at 14:49 +0000, Konrad Rzeszutek Wilk wrote:
> >> On Fri, Mar 08, 2013 at 11:09:56PM +0100, Jacek Milewicz wrote:
> >>>>>> Is there any further information on a possible fix
for this?
> >>> Thoughts?
> >>>>>> Ideas? As it seems to be hitting multiple sites,
I''d like to get it
> >>>>> fixed asap...
> >>>>>
> >>>>> There are 3 ways I can see this fixed:
> >>>>> - update guests so all have same MAX_SKB_FRAGS (that
includes windows
> >>>>> drivers (windows drivers use 19 for MAX_SKB_FRAGS))
-add some sort of
> >>>>> negotiation between host and guest
> >>>>> - change MAX_SKB_FRAGS to 19 to accommodate all guests
> >>>>>
> >>>>> Unfortunately first one requires changes to the guest
and most don''t
> >>>>> have that luxury. So the only way I see it could be
fixed without
> >>>>> breaking compatibility even more  is
> >>>>
> >>>> Ugh. The negotiations between host and guest is probably
the best
> >>> choice.
> >>>> The issues you are going to hit are that you might need to
redo the skbs
> >>> to
> >>>> match what the frontend''s max is.
> >>>>
> >>>> Annie, Wei, Ian - were there some RFC patches floating
around for this?
> >>>>
> >>>
> >>> As much as I agree that negotiation is the best option in long
term. It
> >>> relies on people upgrading their kernels - and this is not the
case (only
> >>> people running kernels from before 2011-12-23 are affected by
this bug
> >>> (I''m not sure about other platforms)).
> >>> And in a lot of cases (VPS providers) there is no easy way to
upgrade
> >>> guest kernels.
> >>
> >> Sure. The other option in the xen-netback might be a configurable
option
> >> to let net-back know that it is running with older guests which
expect
> >> 18 size MAX_SKB_FRAGS. That way we have the negotiation part, the
code to
> >> deal with backend MAX_SKB_FRAGS != frontend MAX_SKB_FRAGS and the
value that
> >> the system admin provides.
> >
> > I think this is over complicating things. netback can and should be
> > modified to be able to cope with guests using frags == 18 (or larger)
> > even if it only itself supports frags == 16 by coalescing things in
the
> > obvious way. This works for all guest supplied frames up to 64K in
size,
> > regardless of the number of slots they use to represent that 64K.
>
> On this, while we just hacked this in the kernel source to increase
> MAX_SKB_FRAGS to 19, I believe Jacek Milewicz tested 18 to work fine on
> linux guests, but it seems Windows guests would still fail unless it was
> increased to 19.

No netback has TTBOMK ever support 19, so I don''t know how those guests
ever worked, but regardless doing coalescing in the backend would fix
this at least for frames which are <64K in size.

Ian.