Re: [patch V2 3/7] futex: Add op for hash preallocation

From: Sebastian Andrzej Siewior
Date: Fri May 27 2016 - 13:28:05 EST


On 2016-05-19 14:25:58 [+0200], Peter Zijlstra wrote:
> On Thu, May 05, 2016 at 08:44:05PM -0000, Thomas Gleixner wrote:
> > +static int futex_preallocate_hash(unsigned int slots)
> > +{
> > +#ifdef CONFIG_FUTEX_PRIVATE_HASH
> > + struct mm_struct *mm = current->mm;
> > + struct futex_hash_bucket *hb;
> > + unsigned int bits;
> > +
> > + /* Try to allocate the requested nr of slots */
> > + bits = order_base_2(slots);
> > +
> > + if (bits < FUTEX_MIN_HASH_BITS)
> > + bits = FUTEX_MIN_HASH_BITS;
> > +
> > + if (bits > futex_max_hash_bits)
> > + bits = futex_max_hash_bits;
> > +
> > + futex_populate_hash(bits);
>
> Should we not simply fail if the provided number of slots is not a power
> of 2 ?

We could if it is worth doing so. The procfs interface which limits the
upper / lower limit is bits based. This is slot based which then gets
converted to the number if bits.
If we align this interface with proc's limits then we would expect the
number of bits instead slots - now check for power of two anymore.
Anyone?

Sebastian