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

From: Peter Zijlstra
Date: Mon May 30 2016 - 04:59:29 EST


On Fri, May 27, 2016 at 07:27:57PM +0200, Sebastian Andrzej Siewior wrote:
> 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?

I'm all for consistent and strict when it comes to things like this.