On Thu, 2005-08-25 at 11:54 -0700, George Anzinger wrote:~
Robert Love wrote:
On Thu, 2005-08-25 at 09:33 -0400, John McCutchan wrote:
On Thu, 2005-08-25 at 22:07 +1200, Reuben Farrelly wrote:
I think the best thing is to take idr into user space and emulate the problem usage. To this end, from the log it appears that you _might_ be moving between 0, 1 and 2 entries increasing the number each time. It also appears that the failure happens here:
add 1023
add 1024
find 1024 or is it the remove that fails? It also looks like 1024 got allocated twice. Am I reading the log correctly?
You are reading the log correctly. There are two bugs. One is that if we
pass X to idr_get_new_above, it can return X again (doesn't ever seem to
return < X). The other problem is that the find fails on 1024 (and 2048
if we skip 1024).
So, is it correct to assume that the tree is empty save these two at this time? I am just trying to figure out what the test program needs to do.
Yes that is the exact scenario. Only 2 id's are used at any given time,
and once we hit 1024 things break. This doesn't happen when the tree is
not empty.
Thanks for looking at this!