>+ /* >+ * 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) Thanks Yohan