Subject: Re: [PATCH net 3/3] bonding:force to use primary slave

From: Nicolas de Pesloüan<[email-masked]>
Date: Mon, 11 Jun 2012 21:49:47 +0200

Le 11/06/2012 11:00, Weiping Pan a écrit :
> When we set primary slave with module parameters, bond will always use this
> primary slave as active slave.
>
> But when we modify primary slave via sysfs, it will call
> bond_should_change_active() and take into account primary_reselect.
>
> And I think we should use the new primary slave as the new active slave
> regardless of the value of primary_reselect.
> Thus the behavior is the same with module parameters and meets the
> administrator's expectation.
>
> Signed-off-by: Weiping Pan<[email-masked]>
> ---
>   drivers/net/bonding/bond_sysfs.c |    1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
> index 1b0f3cd..7256ae4 100644
> --- a/drivers/net/bonding/bond_sysfs.c
> +++ b/drivers/net/bonding/bond_sysfs.c
> @@ -1077,6 +1077,7 @@ static ssize_t bonding_store_primary(struct device *d,
>   				bond->dev->name, slave->dev->name);
>   			bond->primary_slave = slave;
>   			strcpy(bond->params.primary, slave->dev->name);
> +			bond->force_primary = true;
>   			bond_select_active_slave(bond);
>   			goto out;
>   		}

Not sure this is the right behavior. One may want to change the primary without causing a switch to 
this primary if another slave is already active, and setup primary_reselect to failure or better for 
that reason. The administrator still have the option to write into active_slave, to force the new 
active slave after changing the primary.

Arguably, this should be documented.

	Nicolas.