summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSayali Lokhande <sayalil@codeaurora.org>2017-04-06 09:56:52 +0530
committerSayali Lokhande <sayalil@codeaurora.org>2017-04-06 10:12:38 +0530
commit7e83faf32824cba959a710abcc13daeb0b673a86 (patch)
tree4b8b91ebba003f5b3e5c87cf6a9d0c9444725264
parenta3851309dbf7e919b27e2ec927ba3f6350347dff (diff)
Revert "sd: Fix rw_max for devices that report an optimal xfer size"
This reverts 'commit 9814eb75495b ("sd: Fix rw_max for devices that report an optimal xfer size")'. Max sectors limit for request queue(q->limits.max_sectors) is reduced from 1024 to 16 sectors by above commit and causing performance impact (reduced by upto 50%). Hence revert the change to fix the performance issue observed on 8998. Change-Id: I9abd2be6c90922ea9de818912f405e0d292a62b8 Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org>
-rw-r--r--drivers/scsi/sd.c8
-rw-r--r--drivers/scsi/sd.h5
2 files changed, 4 insertions, 9 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index d5c00951cf93..5d81bcc1dc75 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2806,10 +2806,10 @@ static int sd_revalidate_disk(struct gendisk *disk)
if (sdkp->opt_xfer_blocks &&
sdkp->opt_xfer_blocks <= dev_max &&
sdkp->opt_xfer_blocks <= SD_DEF_XFER_BLOCKS &&
- logical_to_bytes(sdp, sdkp->opt_xfer_blocks) >= PAGE_CACHE_SIZE) {
- q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks);
- rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks);
- } else
+ sdkp->opt_xfer_blocks * sdp->sector_size >= PAGE_CACHE_SIZE)
+ rw_max = q->limits.io_opt =
+ sdkp->opt_xfer_blocks * sdp->sector_size;
+ else
rw_max = BLK_DEF_MAX_SECTORS;
/* Combine with controller limits */
diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h
index 765a6f1ac1b7..654630bb7d0e 100644
--- a/drivers/scsi/sd.h
+++ b/drivers/scsi/sd.h
@@ -151,11 +151,6 @@ static inline sector_t logical_to_sectors(struct scsi_device *sdev, sector_t blo
return blocks << (ilog2(sdev->sector_size) - 9);
}
-static inline unsigned int logical_to_bytes(struct scsi_device *sdev, sector_t blocks)
-{
- return blocks * sdev->sector_size;
-}
-
/*
* A DIF-capable target device can be formatted with different
* protection schemes. Currently 0 through 3 are defined: