On 03/03/2016 04:49, Parav Pandit wrote: > 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. 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 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html