Subject: Re: [PATCH net-next v11 2/5] netvsc: refactor notifier/event handling code to use the failover framework

From: "Michael S. Tsirkin" <[email-masked]>
Date: Tue, 22 May 2018 16:39:33 +0300

On Tue, May 22, 2018 at 03:26:26PM +0200, Jiri Pirko wrote:
> Tue, May 22, 2018 at 03:17:37PM CEST, [email-masked] wrote:
> >On Tue, May 22, 2018 at 03:14:22PM +0200, Jiri Pirko wrote:
> >> Tue, May 22, 2018 at 03:12:40PM CEST, [email-masked] wrote:
> >> >On Tue, May 22, 2018 at 11:08:53AM +0200, Jiri Pirko wrote:
> >> >> Tue, May 22, 2018 at 11:06:37AM CEST, [email-masked] wrote:
> >> >> >Tue, May 22, 2018 at 04:06:18AM CEST, [email-masked] wrote:
> >> >> >>Use the registration/notification framework supported by the generic
> >> >> >>failover infrastructure.
> >> >> >>
> >> >> >>Signed-off-by: Sridhar Samudrala <[email-masked]>
> >> >> >
> >> >> >In previous patchset versions, the common code did
> >> >> >netdev_rx_handler_register() and netdev_upper_dev_link() etc
> >> >> >(netvsc_vf_join()). Now, this is still done in netvsc. Why?
> >> >> >
> >> >> >This should be part of the common "failover" code.
> >> >> >
> >> >> 
> >> >> Also note that in the current patchset you use IFF_FAILOVER flag for
> >> >> master, yet for the slave you use IFF_SLAVE. That is wrong.
> >> >> IFF_FAILOVER_SLAVE should be used.
> >> >
> >> >Or drop IFF_FAILOVER_SLAVE and set both IFF_FAILOVER and IFF_SLAVE?
> >> 
> >> No. IFF_SLAVE is for bonding.
> >
> >What breaks if we reuse it for failover?
> 
> This is exposed to userspace. IFF_SLAVE is expected for bonding slaves.
> And failover slave is not a bonding slave.

That does not really answer the question.  I'd claim it's sufficiently
like a bond slave for IFF_SLAVE to make sense.

In fact you will find that netvsc already sets IFF_SLAVE, and so
does e.g. the eql driver.

The advantage of using IFF_SLAVE is that userspace knows to skip it.  If
we don't set IFF_SLAVE existing userspace tries to use the lowerdev.

-- 
MST