Re: [PATCH v2 1/8] lib/find_bit.c: Add find_last_zero_bit

From: Yun Levi
Date: Sun Dec 06 2020 - 03:40:24 EST


> This, and the change above this, are not related to this patch so you
> might not want to include them.
>
> Also, why is this patch series even needed? I don't see a justification
> for it anywhere, only "what" this patch is, not "why".

A little part of codes are trying to find the last zero bit using
for_each_clear_bit.
For example in fs/btrfs/free-space-cache.c' s
steal_from_bitmap_to_front function
which I changed in the 8'th patch.
I think it has some overhead to find the last clear bit (it start to
find from 0 bit to specified index),
so I try to add the find_last_zero_bit function to improve this.

Maybe I have a lack explanation in the message.

Sorry to make noise.

Thanks.
Levi.



On Sun, Dec 6, 2020 at 5:31 PM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Sun, Dec 06, 2020 at 03:46:24PM +0900, Levi Yun wrote:
> > Inspired find_next_*_bit and find_last_bit, add find_last_zero_bit
> > And add le support about find_last_bit and find_last_zero_bit.
> >
> > Signed-off-by: Levi Yun <ppbuk5246@xxxxxxxxx>
> > ---
> > lib/find_bit.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++--
> > 1 file changed, 62 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/find_bit.c b/lib/find_bit.c
> > index 4a8751010d59..f9dda2bf7fa9 100644
> > --- a/lib/find_bit.c
> > +++ b/lib/find_bit.c
> > @@ -90,7 +90,7 @@ unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size,
> > EXPORT_SYMBOL(find_next_zero_bit);
> > #endif
> >
> > -#if !defined(find_next_and_bit)
> > +#ifndef find_next_and_bit
> > unsigned long find_next_and_bit(const unsigned long *addr1,
> > const unsigned long *addr2, unsigned long size,
> > unsigned long offset)
> > @@ -141,7 +141,7 @@ unsigned long find_last_bit(const unsigned long *addr, unsigned long size)
> > {
> > if (size) {
> > unsigned long val = BITMAP_LAST_WORD_MASK(size);
> > - unsigned long idx = (size-1) / BITS_PER_LONG;
> > + unsigned long idx = (size - 1) / BITS_PER_LONG;
> >
> > do {
> > val &= addr[idx];
>
> This, and the change above this, are not related to this patch so you
> might not want to include them.
>
> Also, why is this patch series even needed? I don't see a justification
> for it anywhere, only "what" this patch is, not "why".
>
> thanks
>
> greg k-h