[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] ratelimit: restrict the delay time to a non-negative value
From: |
Alberto Garcia |
Subject: |
Re: [PATCH] ratelimit: restrict the delay time to a non-negative value |
Date: |
Wed, 21 Sep 2022 08:17:32 +0000 |
On Wed 21 Sep 2022 09:47:32 AM +08, Wang Liang wrote:
>> > - return limit->slice_end_time - now;
>> > + return MAX(limit->slice_end_time - now, 0);
>>
>> How can this be negative? slice_end_time is guaranteed to be larger
>> than
>> now:
>>
>> if (limit->slice_end_time < now) {
>> /* Previous, possibly extended, time slice finished; reset
>> the
>> * accounting. */
>> limit->slice_start_time = now;
>> limit->slice_end_time = now + limit->slice_ns;
>> limit->dispatched = 0;
>> }
>>
> This is just a guarantee.
>
> If slice_end_time is assigned later by
> limit->slice_end_time = limit->slice_start_time +
> (uint64_t)(delay_slices * limit->slice_ns);
Ok, on a closer look, if at the start of the function
limit->slice_start_time < now, and
limit->slice_end_time >= now
it seems that in principle what you say can happen.
If it's so, it would be good to know under what conditions this happens,
because this hasn't changed in years.
Berto