• J
    idr: introduce idr_alloc_cyclic() · 3e6628c4
    Jeff Layton 提交于
    As Tejun points out, there are several users of the IDR facility that
    attempt to use it in a cyclic fashion.  These users are likely to see
    -ENOSPC errors after the counter wraps one or more times however.
    
    This patchset adds a new idr_alloc_cyclic routine and converts several
    of these users to it.  Many of these users are in obscure parts of the
    kernel, and I don't have a good way to test some of them.  The change is
    pretty straightforward though, so hopefully it won't be an issue.
    
    There is one other cyclic user of idr_alloc that I didn't touch in
    ipc/util.c.  That one is doing some strange stuff that I didn't quite
    understand, but it looks like it should probably be converted later
    somehow.
    
    This patch:
    
    Thus spake Tejun Heo:
    
        Ooh, BTW, the cyclic allocation is broken.  It's prone to -ENOSPC
        after the first wraparound.  There are several cyclic users in the
        kernel and I think it probably would be best to implement cyclic
        support in idr.
    
    This patch does that by adding new idr_alloc_cyclic function that such
    users in the kernel can use.  With this, there's no need for a caller to
    keep track of the last value used as that's now tracked internally.  This
    should prevent the ENOSPC problems that can hit when the "last allocated"
    counter exceeds INT_MAX.
    
    Later patches will convert existing cyclic users to the new interface.
    Signed-off-by: NJeff Layton <jlayton@redhat.com>
    Reviewed-by: NTejun Heo <tj@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: "J. Bruce Fields" <bfields@fieldses.org>
    Cc: Eric Paris <eparis@parisplace.org>
    Cc: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Cc: John McCutchan <john@johnmccutchan.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Cc: Or Gerlitz <ogerlitz@mellanox.com>
    Cc: Robert Love <rlove@rlove.org>
    Cc: Roland Dreier <roland@purestorage.com>
    Cc: Sridhar Samudrala <sri@us.ibm.com>
    Cc: Steve Wise <swise@opengridcomputing.com>
    Cc: Tom Tucker <tom@opengridcomputing.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    3e6628c4
idr.h 7.2 KB