All,
I came across these atomic_inc_return_safe() & atomic_dec_return_safe()
functions that hold the counters at safe values.
atomic_inc_return_safe()
If the counter is already 0 it will not be incremented.
If the counter is already at its maximum value returns
-EINVAL without updating it.
atomic_dec_return_safe()
Decrement the counter. Return the resulting value, or -EINVAL
These two routines are static and only used in rbd.c.
Can these become part of atomic_t ops?
thanks,
-- Shuah
On 10/2/20 4:34 PM, Shuah Khan wrote:
> All,
>
> I came across these atomic_inc_return_safe() & atomic_dec_return_safe()
> functions that hold the counters at safe values.
>
> atomic_inc_return_safe()
>
> If the counter is already 0 it will not be incremented.
> If the counter is already at its maximum value returns
> -EINVAL without updating it.
>
> atomic_dec_return_safe()
>
> Decrement the counter. Return the resulting value, or -EINVAL
>
> These two routines are static and only used in rbd.c.
>
> Can these become part of atomic_t ops?
I think you just want to use refcount_t for this use case. They
have safe guards for under/overflow.
--
Jens Axboe
On 10/2/20 5:44 PM, Jens Axboe wrote:
> On 10/2/20 4:34 PM, Shuah Khan wrote:
>> All,
>>
>> I came across these atomic_inc_return_safe() & atomic_dec_return_safe()
>> functions that hold the counters at safe values.
>>
>> atomic_inc_return_safe()
>>
>> If the counter is already 0 it will not be incremented.
>> If the counter is already at its maximum value returns
>> -EINVAL without updating it.
>>
>> atomic_dec_return_safe()
>>
>> Decrement the counter. Return the resulting value, or -EINVAL
>>
>> These two routines are static and only used in rbd.c.
>>
>> Can these become part of atomic_t ops?
>
> I think you just want to use refcount_t for this use case. They
> have safe guards for under/overflow.
>
Makes sense. Guess these came before refcount_t.
I will track this for refcount_t conversion.
thanks,
-- Shuah