scsi: sd: Improve sd_print_capacity()
authorDamien Le Moal <damien.lemoal@wdc.com>
Wed, 30 Jan 2019 07:07:34 +0000 (16:07 +0900)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 Feb 2019 03:07:24 +0000 (22:07 -0500)
There is no need to call twice string_get_size() when the capacity messages
are not going to be printed. Reverse the message output condition to return
early and avoid executing string_get_size() when it is not necessary.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/sd.c

index 4fbb831..3db9b1f 100644 (file)
@@ -2565,25 +2565,25 @@ sd_print_capacity(struct scsi_disk *sdkp,
        int sector_size = sdkp->device->sector_size;
        char cap_str_2[10], cap_str_10[10];
 
+       if (!sdkp->first_scan && old_capacity == sdkp->capacity)
+               return;
+
        string_get_size(sdkp->capacity, sector_size,
                        STRING_UNITS_2, cap_str_2, sizeof(cap_str_2));
        string_get_size(sdkp->capacity, sector_size,
-                       STRING_UNITS_10, cap_str_10,
-                       sizeof(cap_str_10));
+                       STRING_UNITS_10, cap_str_10, sizeof(cap_str_10));
 
-       if (sdkp->first_scan || old_capacity != sdkp->capacity) {
-               sd_printk(KERN_NOTICE, sdkp,
-                         "%llu %d-byte logical blocks: (%s/%s)\n",
-                         (unsigned long long)sdkp->capacity,
-                         sector_size, cap_str_10, cap_str_2);
+       sd_printk(KERN_NOTICE, sdkp,
+                 "%llu %d-byte logical blocks: (%s/%s)\n",
+                 (unsigned long long)sdkp->capacity,
+                 sector_size, cap_str_10, cap_str_2);
 
-               if (sdkp->physical_block_size != sector_size)
-                       sd_printk(KERN_NOTICE, sdkp,
-                                 "%u-byte physical blocks\n",
-                                 sdkp->physical_block_size);
+       if (sdkp->physical_block_size != sector_size)
+               sd_printk(KERN_NOTICE, sdkp,
+                         "%u-byte physical blocks\n",
+                         sdkp->physical_block_size);
 
-               sd_zbc_print_zones(sdkp);
-       }
+       sd_zbc_print_zones(sdkp);
 }
 
 /* called with buffer of length 512 */