Re: [PATCH 06/16] rbd: convert timeouts to secs_to_jiffies()

From: Ilya Dryomov
Date: Mon Feb 03 2025 - 16:20:03 EST


On Wed, Jan 29, 2025 at 10:03 PM Easwar Hariharan
<eahariha@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On 1/28/2025 10:21 AM, Easwar Hariharan wrote:
> > Commit b35108a51cf7 ("jiffies: Define secs_to_jiffies()") introduced
> > secs_to_jiffies(). As the value here is a multiple of 1000, use
> > secs_to_jiffies() instead of msecs_to_jiffies to avoid the multiplication.
> >
> > This is converted using scripts/coccinelle/misc/secs_to_jiffies.cocci with
> > the following Coccinelle rules:
> >
> > @depends on patch@
> > expression E;
> > @@
> >
> > -msecs_to_jiffies
> > +secs_to_jiffies
> > (E
> > - * \( 1000 \| MSEC_PER_SEC \)
> > )
> >
> > Signed-off-by: Easwar Hariharan <eahariha@xxxxxxxxxxxxxxxxxxx>
> > ---
> > drivers/block/rbd.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
>
> <snip>
>
> > @@ -6283,9 +6283,9 @@ static int rbd_parse_param(struct fs_parameter *param,
> > break;
> > case Opt_lock_timeout:
> > /* 0 is "wait forever" (i.e. infinite timeout) */
> > - if (result.uint_32 > INT_MAX / 1000)
> > + if (result.uint_32 > INT_MAX)
> > goto out_of_range;
> > - opt->lock_timeout = msecs_to_jiffies(result.uint_32 * 1000);
> > + opt->lock_timeout = secs_to_jiffies(result.uint_32);
> > break;
> > case Opt_pool_ns:
> > kfree(pctx->spec->pool_ns);
> >
>
> Hi Ilya, Dongsheng, Jens, others,
>
> Could you please review this hunk and confirm the correct range check
> here? I figure this is here because of the multiplier to
> msecs_to_jiffies() and therefore unneeded after the conversion. If so, I

Hi Easwar,

I'm not sure why INT_MAX / 1000 was used for an option which is defined
as fsparam_u32 and accessed through result.uint_32, but yes, this check
appears to be unneeded after the conversion to me.

> noticed patch 07 has similar range checks that I neglected to fix and
> can do in a v2.

Go ahead but note that two of them also reject 0 -- that part needs to
stay ;)

Thanks,

Ilya