Re: [PATCHv9 1/3] rdmacg: Added rdma cgroup controller

From: Parav Pandit
Date: Wed Mar 02 2016 - 21:49:16 EST


Hi Tejun, Haggai,

On Thu, Mar 3, 2016 at 1:28 AM, Parav Pandit <pandit.parav@xxxxxxxxx> wrote:
>>> + rpool->refcnt--;
>>> + if (rpool->refcnt == 0 && rpool->num_max_cnt == pool_info->table_len) {
>>
>> If the caller charges 2 and then uncharges 1 two times, the refcnt
>> underflows? Why not just track how many usages are zero?
>>
> This is certainly must fix bug. Changed refcnt to usage_sum and changed to do
> usage_sum -= num during uncharging
> and
> usage_sum += num during charing.

This is not sufficient as css_get() and put are done only once per
call, which leads to similar problem as of refcnt.
As I think more, I realised that this particular test is missing that
resulted in this related bug, I realize that we don't have use case to
have "num" field from the IB stack side.
For bulk free IB stack will have to keep track of different or same
rdmacg returned values to call uncharge() with right number of
resources, all of that complexity just doesn't make sense and not
required.
So as first step to further simplify this, I am removing "num" input
field from charge and uncharge API.