Re: [PATCH 07/12] scsi_debug: use likely hints on fast path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2016-04-26 06:14 PM, Bart Van Assche wrote:
On 04/25/2016 09:16 AM, Douglas Gilbert wrote:
-    if ((SDEBUG_OPT_MEDIUM_ERR & sdebug_opts) &&
-        (lba <= (OPT_MEDIUM_ERR_ADDR + OPT_MEDIUM_ERR_NUM - 1)) &&
-        ((lba + num) > OPT_MEDIUM_ERR_ADDR)) {
+    if (unlikely((SDEBUG_OPT_MEDIUM_ERR & sdebug_opts) &&
+             (lba <= (OPT_MEDIUM_ERR_ADDR + OPT_MEDIUM_ERR_NUM - 1)) &&
+             ((lba + num) > OPT_MEDIUM_ERR_ADDR))) {
 > [ ... ]
-    if ((qa_indx < 0) || (qa_indx >= SCSI_DEBUG_CANQUEUE)) {
+    if (unlikely((qa_indx < 0) || (qa_indx >= SCSI_DEBUG_CANQUEUE))) {
 > [ ... ]
-    if ((qdepth > 0) && (num_in_q >= qdepth)) {
+    if (unlikely((qdepth > 0) && (num_in_q >= qdepth))) {
 > [ ... ]
-    } else if ((sdebug_every_nth != 0) &&
-           (SDEBUG_OPT_RARE_TSF & sdebug_opts) &&
-           (scsi_result == 0)) {
+    } else if (unlikely((sdebug_every_nth != 0) &&
+                (SDEBUG_OPT_RARE_TSF & sdebug_opts) &&
+                (scsi_result == 0))) {

Since you are modifying this code, please remove the superfluous parentheses.

I can find no reference to "superfluous parentheses" in
Documentation/CodingStyle . As for the improved readability of:

           else if (unlikely(sdebug_every_nth != 0 &&
                      SDEBUG_OPT_RARE_TSF & sdebug_opts &&
                      scsi_result == 0)) {
I have my doubts.

 > -    struct sdebug_host_info * sdbg_host;
 > -    struct sdebug_dev_info * open_devip = NULL;
 > -    struct sdebug_dev_info * devip =
 > -            (struct sdebug_dev_info *)sdev->hostdata;
 > +    struct sdebug_host_info *sdbg_host;
 > +    struct sdebug_dev_info *open_devip = NULL;
 > +    struct sdebug_dev_info *devip;
 >
 > -    if (devip)
 > -        return devip;

Has this change been described in the patch description?

The function was previously called devInfoReg() and was called
irrespective of whether a suitable sdebug_dev_info instance
existed or not. So that function call just wasted time if an
instance existed. That function is replaced by
find_build_dev_info() which is only called when non trivial work
is needed. Its invocation looks like this:
        if (NULL == devip) {
                devip = find_build_dev_info(sdp);
                if (NULL == devip)
                        return 1;  /* no resources, will be marked offline */
        }

Do all re-factorings of code need a patch description?

@@ -4632,9 +4617,11 @@ static int __init scsi_debug_init(void)
      switch (sdebug_dif) {

      case SD_DIF_TYPE0_PROTECTION:
+        break;
      case SD_DIF_TYPE1_PROTECTION:
      case SD_DIF_TYPE2_PROTECTION:
      case SD_DIF_TYPE3_PROTECTION:
+        have_dif_prot = true;
          break;

Same comment for this code: has this change been explained in the patch
description?

The code previously did things like
        if (!sdebug_dif) { /* whatever */ }
which annoyed me because it relied on knowing that the badly
named SD_DIF_TYPE0_PROTECTION (which is _no_ protection) has
the value 0. So I introduced a bool at file scope (thus it is
initialized to false and checkpatch.pl complains if that is
stated explicitly). The above code is where the bool (i.e.
have_dif_prot) is set.

Doug Gilbert

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux