Re: [PATCHv9 1/3] rdmacg: Added rdma cgroup controller
From: Haggai Eran <hidden>
Date: 2016-03-03 07:52:23
Also in:
linux-rdma, lkml
On 03/03/2016 04:49, Parav Pandit wrote:
Hi Tejun, Haggai, On Thu, Mar 3, 2016 at 1:28 AM, Parav Pandit [off-list ref] wrote:quoted
quoted
quoted
+ 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.
Are css_get_many() and css_put_many() relevant here?
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.
IIRC there are no instances in the RDMA subsystem today where userspace allocates more than one resource at a time. Yishai, in your proposed RSS patchset did you have a verb to allocate multiple work queues at once? Haggai