> So, if you want a cyclic allocation, the allocation should be tried in
> [start, END) and then [0, start); otherwise, after the allocation
> wraps for the first time, as the closer the starting point gets to
> END, the chance of not finding a vacant slot in [start, END) goes
> higher. When
On Fri, Feb 08, 2013 at 01:01:49PM -0800, Tejun Heo wrote:
> MAX_IDR_MASK is another weirdness in the idr interface. As idr covers
> whole positive integer range, it's defined as 0x7fff or INT_MAX.
>
> Its usage in idr_find(), idr_replace() and idr_remove() is bizarre.
> They basically mask
On Fri, Feb 08, 2013 at 01:01:49PM -0800, Tejun Heo wrote:
MAX_IDR_MASK is another weirdness in the idr interface. As idr covers
whole positive integer range, it's defined as 0x7fff or INT_MAX.
Its usage in idr_find(), idr_replace() and idr_remove() is bizarre.
They basically mask off
So, if you want a cyclic allocation, the allocation should be tried in
[start, END) and then [0, start); otherwise, after the allocation
wraps for the first time, as the closer the starting point gets to
END, the chance of not finding a vacant slot in [start, END) goes
higher. When @start
Hello,
On Fri, Feb 08, 2013 at 10:09:13PM +, Hefty, Sean wrote:
> > Used to wrap cyclic @start. Can be replaced with max(next, 0).
> > Note that this type of cyclic allocation using idr is buggy. These
> > are prone to spurious -ENOSPC failure after the first wraparound.
>
> The
Hello,
On Fri, Feb 08, 2013 at 10:09:13PM +, Hefty, Sean wrote:
Used to wrap cyclic @start. Can be replaced with max(next, 0).
Note that this type of cyclic allocation using idr is buggy. These
are prone to spurious -ENOSPC failure after the first wraparound.
The replacement
> * drivers/infiniband/core/cm.c:cm_alloc_id()
> drivers/infiniband/hw/mlx4/cm.c:id_map_alloc()
>
> Used to wrap cyclic @start. Can be replaced with max(next, 0).
> Note that this type of cyclic allocation using idr is buggy. These
> are prone to spurious -ENOSPC failure after the first
MAX_IDR_MASK is another weirdness in the idr interface. As idr covers
whole positive integer range, it's defined as 0x7fff or INT_MAX.
Its usage in idr_find(), idr_replace() and idr_remove() is bizarre.
They basically mask off the sign bit and operate on the rest, so if
the caller, by
MAX_IDR_MASK is another weirdness in the idr interface. As idr covers
whole positive integer range, it's defined as 0x7fff or INT_MAX.
Its usage in idr_find(), idr_replace() and idr_remove() is bizarre.
They basically mask off the sign bit and operate on the rest, so if
the caller, by
* drivers/infiniband/core/cm.c:cm_alloc_id()
drivers/infiniband/hw/mlx4/cm.c:id_map_alloc()
Used to wrap cyclic @start. Can be replaced with max(next, 0).
Note that this type of cyclic allocation using idr is buggy. These
are prone to spurious -ENOSPC failure after the first
10 matches
Mail list logo