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

From: 정요한 Mobile SE (JOUNG YOHAN) <hidden>
Date: 2021-06-14 07:44:26
Also in: lkml

quoted
quoted
quoted
quoted
+      /*
+       * 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
quoted
Thanks
Yohan
quoted
Thanks,
Avri
quoted
Thanks
Yohan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help