+ /*
+ * 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