[dm-devel] Re: [PATCH] 1/1: Device-Mapper: Remove 1024 devices limitation

Jim Houston jim.houston at comcast.net
Wed Jul 7 10:58:34 UTC 2004


On Tue, 2004-07-06 at 19:16, Andrew Morton wrote:
Jim Houston <jim.houston at comcast.net> wrote:
> >
> > With out the test above an id beyond the allocated space will alias
> > to one that exists.  Perhaps the highest id currently allocated is 
> > 100, there will be two layers in the radix tree and the while loop
> > above will only look at the 10 least significant bits.  If you call
> > idr_find with 1025 it will return the pointer associated with id 1.
> 
> OK.
> 
> > The patch I sent was against linux-2.6.7, so I missed the change to
> > MAX_ID_SHIFT.
> 
> How about this?
>  
>  	n = idp->layers * IDR_BITS;
> +	if (id >= (1 << n))
> +		return NULL;
> +
>  	p = idp->top;
> +
>  	/* Mask off upper bits we don't use for the search. */
>  	id &= MAX_ID_MASK;
>  

Hi Andrew,

It's not quite right.  If you want to keep a count in the upper bits
you have to mask off that count before checking if the id is beyond the
end of the allocated space.

Jim Houston - Concurrent Computer Corp.




More information about the dm-devel mailing list