2011-06-15 07:58:09

by Rik van Riel

[permalink] [raw]
Subject: netconsole regression w/ 8d8fc29d

After commit 8d8fc29d02a33e4bd5f4fa47823c1fd386346093
(netpoll: disable netpoll when enslave a device), it is
no longer possible to use netconsole together with bridged
KVM guests.

I can see why the change looked reasonable from a networking
point of view, but this has completely disabled netconsole
functionality for a common KVM use case.

After the change, netconsole refuses to bind to eth0.

Since the bridge interface does not support polling,
netconsole cannot use that, either.

I am now reduced to taking digital photos of the last screen
of a kernel oops, instead of getting oopses streamed to my
logging server.

To me the "unpredictable results" were way preferable to
what we have now.

Is there a way forward to restore netconsole functionality
for people who use KVM with bridging, or is it best to just
revert this commit?

commit 8d8fc29d02a33e4bd5f4fa47823c1fd386346093
Author: Amerigo Wang <[email protected]>
Date: Thu May 19 21:39:10 2011 +0000

netpoll: disable netpoll when enslave a device

V3: rename NETDEV_ENSLAVE to NETDEV_JOIN

Currently we do nothing when we enslave a net device which is
running netcon
Neil pointed out that we may get weird results in such case, so
let's disabl
netpoll on the device being enslaved. I think it is too harsh to
prevent
the device being ensalved if it is running netconsole.

By the way, this patch also removes the NETDEV_GOING_DOWN from
netconsole
netdev notifier, because netpoll will check if the device is
running or not
and we don't handle NETDEV_PRE_UP neither.

This patch is based on net-next-2.6.

Signed-off-by: WANG Cong <[email protected]>
Cc: Neil Horman <[email protected]>
Signed-off-by: David S. Miller <[email protected]>


--
All rights reversed


2011-06-15 08:10:18

by Cong Wang

[permalink] [raw]
Subject: Re: netconsole regression w/ 8d8fc29d

于 2011年06月15日 15:58, Rik van Riel 写道:
> After commit 8d8fc29d02a33e4bd5f4fa47823c1fd386346093
> (netpoll: disable netpoll when enslave a device), it is
> no longer possible to use netconsole together with bridged
> KVM guests.
>
> I can see why the change looked reasonable from a networking
> point of view, but this has completely disabled netconsole
> functionality for a common KVM use case.
>
> After the change, netconsole refuses to bind to eth0.
>
> Since the bridge interface does not support polling,
> netconsole cannot use that, either.


Bridge does support polling now. :) You can just setup
netconsole on a bridge device.

Thanks.

2011-06-15 14:05:58

by Rik van Riel

[permalink] [raw]
Subject: Re: netconsole regression w/ 8d8fc29d

On 06/15/2011 04:10 AM, Cong Wang wrote:
> 于 2011年06月15日 15:58, Rik van Riel 写道:
>> After commit 8d8fc29d02a33e4bd5f4fa47823c1fd386346093
>> (netpoll: disable netpoll when enslave a device), it is
>> no longer possible to use netconsole together with bridged
>> KVM guests.
>>
>> I can see why the change looked reasonable from a networking
>> point of view, but this has completely disabled netconsole
>> functionality for a common KVM use case.
>>
>> After the change, netconsole refuses to bind to eth0.
>>
>> Since the bridge interface does not support polling,
>> netconsole cannot use that, either.
>
>
> Bridge does support polling now. :) You can just setup
> netconsole on a bridge device.

This turns out to be mutually exclusive with attaching
virtual interfaces (for KVM guests) to a bridge.

If I start netconsole first, my KVM guests won't start.

If I start the KVM guests first, netconsole won't start,
and fails with these errors:

netconsole:: inserting netconsole module with arguments
[email protected]/br0,[email protected]/00:13:72:17:4A:9C
kernel: [ 1020.927240] netconsole: local port 6666
kernel: [ 1020.927243] netconsole: local IP 74.92.59.68
kernel: [ 1020.927245] netconsole: interface 'br0'
kernel: [ 1020.927246] netconsole: remote port 514
kernel: [ 1020.927247] netconsole: remote IP 74.92.59.66
kernel: [ 1020.927252] netconsole: remote ethernet address 00:13:72:17:4a:9c
kernel: [ 1020.927256] (null): doesn't support polling, aborting.
kernel: [ 1020.927258] netconsole: cleaning up
systemd[1]: netconsole.service: control process exited, code=exited status=1
systemd[1]: Unit netconsole.service entered failed state.

In short, I am still not able to use netconsole and bridged
KVM guests at the same time...

# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0024e838995c no eth0
vnet0
vnet1
vnet2


--
All rights reversed

2011-06-15 14:16:47

by Neil Horman

[permalink] [raw]
Subject: Re: netconsole regression w/ 8d8fc29d

On Wed, Jun 15, 2011 at 10:05:54AM -0400, Rik van Riel wrote:
> On 06/15/2011 04:10 AM, Cong Wang wrote:
> >于 2011年06月15日 15:58, Rik van Riel 写道:
> >>After commit 8d8fc29d02a33e4bd5f4fa47823c1fd386346093
> >>(netpoll: disable netpoll when enslave a device), it is
> >>no longer possible to use netconsole together with bridged
> >>KVM guests.
> >>
> >>I can see why the change looked reasonable from a networking
> >>point of view, but this has completely disabled netconsole
> >>functionality for a common KVM use case.
> >>
> >>After the change, netconsole refuses to bind to eth0.
> >>
> >>Since the bridge interface does not support polling,
> >>netconsole cannot use that, either.
> >
> >
> >Bridge does support polling now. :) You can just setup
> >netconsole on a bridge device.
>
> This turns out to be mutually exclusive with attaching
> virtual interfaces (for KVM guests) to a bridge.
>
> If I start netconsole first, my KVM guests won't start.
>
> If I start the KVM guests first, netconsole won't start,
> and fails with these errors:
>
> netconsole:: inserting netconsole module with arguments
> [email protected]/br0,[email protected]/00:13:72:17:4A:9C
> kernel: [ 1020.927240] netconsole: local port 6666
> kernel: [ 1020.927243] netconsole: local IP 74.92.59.68
> kernel: [ 1020.927245] netconsole: interface 'br0'
> kernel: [ 1020.927246] netconsole: remote port 514
> kernel: [ 1020.927247] netconsole: remote IP 74.92.59.66
> kernel: [ 1020.927252] netconsole: remote ethernet address 00:13:72:17:4a:9c
> kernel: [ 1020.927256] (null): doesn't support polling, aborting.
> kernel: [ 1020.927258] netconsole: cleaning up
> systemd[1]: netconsole.service: control process exited, code=exited status=1
> systemd[1]: Unit netconsole.service entered failed state.
>
> In short, I am still not able to use netconsole and bridged
> KVM guests at the same time...
>
> # brctl show
> bridge name bridge id STP enabled interfaces
> br0 8000.0024e838995c no eth0
> vnet0
> vnet1
> vnet2
>
>
> --
> All rights reversed

Looks like we need to teach the tun-tap driver to support netpoll that shouldn't
be too hard. I'll send up a patch shortly
Neil