Re: [RFC PATCH 1/2] bits: introduce ffs_val()

From: Yury Norov

Date: Fri Jan 09 2026 - 14:44:14 EST


On Fri, Jan 09, 2026 at 08:27:11PM +0100, Petr Tesarik wrote:
> On Fri, 9 Jan 2026 13:26:30 -0500
> Yury Norov <ynorov@xxxxxxxxxx> wrote:

...

> > In bitops world, something_mask() has a very clear meaning. Consider
> > GENMASK(), BITMAP_FIRST_BYTE_MASK(), __BF_FIELD_CHECK_MASK(), and so
> > on.
> >
> > lsb_mask(), or LSB_MASK() if you prefer, is just right.
>
> I assume you mean BITMAP_FIRST_WORD_MASK(), not btrfs-specific
> BITMAP_FIRST_BYTE_MASK(), defined in fs/btrfs/extent_io.h.
>
> But then it nicely illustrate exactly what I mean:

They all have a consistent meaning:

> BIT_MASK(4) = 0x0000000000000010

A mask constructed from bit #4.

> GENMASK(4, 0) = 0x000000000000001f

A mask constructed from bits #0..4.

> BITMAP_FIRST_WORD_MASK(4) == 0xfffffffffffffff0

A mask constructed from all bits starting #4.

Don't see any misalignment here.

> > > The only issue is that LSB may also refer to least-significant BYTE. :-(
> >
> > It will never mean byte because it hosts in bitops.h, not byteops.h
>
> I'm afraid that identifiers from various sources end up next to each
> other and they do not carry tags where each of them came from...

You can name it lsb_bitmask() if you want, either way works. But to me
shorter is better.