Re: [PATCH 06/11] net/bonding: take msecs_to_jiffies_min into use

Imre Deak
2013-05-10T21:19:43Z

On Fri, 2013-05-10 at 15:58 +0200, Michal Kubecek wrote:
> On Fri, May 10, 2013 at 03:13:24PM +0300, Imre Deak wrote:
> > --- a/drivers/net/bonding/bond_main.c
> > +++ b/drivers/net/bonding/bond_main.c
> > @@ -1751,7 +1751,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
> > read_lock(&bond->lock);
> >
> > new_slave->last_arp_rx = jiffies -
> > - (msecs_to_jiffies(bond->params.arp_interval) + 1);
> > + (msecs_to_jiffies_min(bond->params.arp_interval));
> >
> > if (bond->params.miimon && !bond->params.use_carrier) {
> > link_reporting = bond_check_dev_link(bond, slave_dev, 1);
>
> This "+ 1" was actually meant as "plus one". We need to ensure that
>
> slave->last_arp_rx + msecs_to_jiffies(bond->params.arp_interval)
>
> is strictly less than current value of jiffies.

Ok, I see, the adjustment here is for a different reason and
msecs_to_jiffies_min wouldn't express this properly. So we should drop
this patch. Perhaps it'd be nice to add something like the above
explanation as a code comment, to make it clear that the adjustment is
not for guaranteeing a minimum duration as it is in many other places.

--Imre

> So with proposed
> definition of msecs_to_jiffies_min() it works correctly but if the
> implementation ever changes in such way that
>
> msecs_to_jiffies_min(x) >= msecs_to_jiffies(x)
>
> for some value of x, the code would be incorrect.
>
> Michal Kubeček
>