> >+ /* > >+ * 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 ? Thanks, Avri > > Thanks > Yohan