RE: [PATCH v37 3/4] scsi: ufs: Prepare HPB read for cached sub-region

From: 정요한(JOUNG YOHAN) Mobile SE
Date: Mon Jun 14 2021 - 03:44:26 EST


> > > > >+ /*
> > > > >+ * If the region state is active, mctx must be allocated.
> > > > >+ * In this case, check whether the region is evicted or
> > > > >+ * mctx allcation fail.
> > > > >+ */
> > > > >+ if (unlikely(!srgn->mctx)) {
> > > > >+ dev_err(&hpb->sdev_ufs_lu->sdev_dev,
> > > > >+ "no mctx in region %d subregion %d.\n",
> > > > >+ srgn->rgn_idx, srgn->srgn_idx);
> > > > >+ return true;
> > > > >+ }
> > > > >+
> > > > >+ if ((srgn_offset + cnt) > bitmap_len)
> > > > >+ bit_len = bitmap_len - srgn_offset;
> > > > >+ else
> > > > >+ bit_len = cnt;
> > > > >+
> > > > >+ if (find_next_bit(srgn->mctx->ppn_dirty, bitmap_len,
> > > > >+ srgn_offset) < bit_len + srgn_offset)
> > > > >+ return true;
> > > > >+
> > > >
> > > > It seems unnecessary to search through bitmap_len
> > > > How about searching by transfer size?
> > > >
> > > > if (find_next_bit(srgn->mctx->ppn_dirty,
> > > > bit_len + srgn_offset, srgn_offset) < bit_len + srgn_offset)
> > > Isn't bit_len should be used for size, and not bit_len + srgn_offset ?
> >
> > then find_next_bit checks from start to bit_len.
> > find_next_bit stops checking if start is greater than bit_len.
> > it does not check for dirty as transfer_size.
> Right. Size (nbits in _find_next_bit) practically means @end - Confusing...
> Either way, Is this tad optimization worth another spin in your opinion?

Worst case, we have to search every time up to the bitmap_len size.
Even though, when bit_len is 1, only 1 bit needs to be checked
it can increase the effect, depending on the subregion size.

Thanks
Yohan
>
> Thanks,
> Avri
>
> >
> > Thanks
> > Yohan
> >
> > >
> > > Thanks,
> > > Avri
> > >
> > > >
> > > > Thanks
> > > > Yohan