Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 26 Jul 2017 03:10:10 +0000 (20:10 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 26 Jul 2017 03:10:10 +0000 (20:10 -0700)
Pull SCSI fixes from James Bottomley:
 "Three small fixes.

  The transfer size fixes are actually correcting some performance drops
  on the hpsa and smartpqi cards. The cards actually have an internal
  cache for request speed up but bypass it for transfers > 1MB. Since
  4.3 the efficiency of our merges has rendered the cache mostly unused,
  so limit transfers to under 1MB to recover the cache boost"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: sg: fix static checker warning in sg_is_valid_dxfer
  scsi: smartpqi: limit transfer length to 1MB
  scsi: hpsa: limit transfer length to 1MB

drivers/scsi/hpsa.c
drivers/scsi/sg.c
drivers/scsi/smartpqi/smartpqi.h

index 8914eab843372fe3dde09e97b0d2c45aa65bbf64..4f7cdb28bd38fbadc6105906f56fe813346c299c 100644 (file)
@@ -938,7 +938,7 @@ static struct scsi_host_template hpsa_driver_template = {
 #endif
        .sdev_attrs = hpsa_sdev_attrs,
        .shost_attrs = hpsa_shost_attrs,
-       .max_sectors = 8192,
+       .max_sectors = 1024,
        .no_write_same = 1,
 };
 
index 1e82d4128a84800d3f96011c49e0b3fc12c55d8e..4fe606b000b4461c05e441cbb787edcfec51e72b 100644 (file)
@@ -759,8 +759,11 @@ static bool sg_is_valid_dxfer(sg_io_hdr_t *hp)
                        return false;
                return true;
        case SG_DXFER_FROM_DEV:
-               if (hp->dxfer_len < 0)
-                       return false;
+               /*
+                * for SG_DXFER_FROM_DEV we always set dxfer_len to > 0. dxferp
+                * can either be NULL or != NULL so there's no point in checking
+                * it either. So just return true.
+                */
                return true;
        case SG_DXFER_TO_DEV:
        case SG_DXFER_TO_FROM_DEV:
index 07ec8a8877dec04b6ac3ea35aef2ac1a6c6c3e01..e164ffade38a7166690a9ecb206be1165e62278c 100644 (file)
@@ -690,7 +690,7 @@ struct pqi_config_table_heartbeat {
 
 #define PQI_MAX_OUTSTANDING_REQUESTS           ((u32)~0)
 #define PQI_MAX_OUTSTANDING_REQUESTS_KDUMP     32
-#define PQI_MAX_TRANSFER_SIZE                  (4 * 1024U * 1024U)
+#define PQI_MAX_TRANSFER_SIZE                  (1024U * 1024U)
 #define PQI_MAX_TRANSFER_SIZE_KDUMP            (512 * 1024U)
 
 #define RAID_MAP_MAX_ENTRIES           1024