summaryrefslogtreecommitdiffstats
path: root/SCSI-add-1024-max-sectors-black-list-flag.patch
diff options
context:
space:
mode:
Diffstat (limited to 'SCSI-add-1024-max-sectors-black-list-flag.patch')
-rw-r--r--SCSI-add-1024-max-sectors-black-list-flag.patch95
1 files changed, 0 insertions, 95 deletions
diff --git a/SCSI-add-1024-max-sectors-black-list-flag.patch b/SCSI-add-1024-max-sectors-black-list-flag.patch
deleted file mode 100644
index f8cac0127..000000000
--- a/SCSI-add-1024-max-sectors-black-list-flag.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From: Mike Christie <michaelc@cs.wisc.edu>
-Date: Tue, 21 Apr 2015 03:42:24 -0400
-Subject: [PATCH] SCSI: add 1024 max sectors black list flag
-
-This works around a issue with qnap iscsi targets not handling large IOs
-very well.
-
-The target returns:
-
-VPD INQUIRY: Block limits page (SBC)
- Maximum compare and write length: 1 blocks
- Optimal transfer length granularity: 1 blocks
- Maximum transfer length: 4294967295 blocks
- Optimal transfer length: 4294967295 blocks
- Maximum prefetch, xdread, xdwrite transfer length: 0 blocks
- Maximum unmap LBA count: 8388607
- Maximum unmap block descriptor count: 1
- Optimal unmap granularity: 16383
- Unmap granularity alignment valid: 0
- Unmap granularity alignment: 0
- Maximum write same length: 0xffffffff blocks
- Maximum atomic transfer length: 0
- Atomic alignment: 0
- Atomic transfer length granularity: 0
-
-and it is *sometimes* able to handle at least one IO of size up to 8 MB. We
-have seen in traces where it will sometimes work, but other times it
-looks like it fails and it looks like it returns failures if we send
-multiple large IOs sometimes. Also it looks like it can return 2 different
-errors. It will sometimes send iscsi reject errors indicating out of
-resources or it will send invalid cdb illegal requests check conditions.
-And then when it sends iscsi rejects it does not seem to handle retries
-when there are command sequence holes, so I could not just add code to
-try and gracefully handle that error code.
-
-The problem is that we do not have a good contact for the company,
-so we are not able to determine under what conditions it returns
-which error and why it sometimes works.
-
-So, this patch just adds a new black list flag to set targets like this to
-the old max safe sectors of 1024. The max_hw_sectors changes added in 3.19
-caused this regression, so I also ccing stable.
-
-Reported-by: Christian Hesse <list@eworm.de>
-Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
-Cc: stable@vger.kernel.org
----
- drivers/scsi/scsi_devinfo.c | 1 +
- drivers/scsi/scsi_scan.c | 6 ++++++
- include/scsi/scsi_devinfo.h | 1 +
- 3 files changed, 8 insertions(+)
-
-diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
-index 262ab837a704..9f77d23239a2 100644
---- a/drivers/scsi/scsi_devinfo.c
-+++ b/drivers/scsi/scsi_devinfo.c
-@@ -226,6 +226,7 @@ static struct {
- {"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
- {"Promise", "VTrak E610f", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC},
- {"Promise", "", NULL, BLIST_SPARSELUN},
-+ {"QNAP", "iSCSI Storage", NULL, BLIST_MAX_1024},
- {"QUANTUM", "XP34301", "1071", BLIST_NOTQ},
- {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN},
- {"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN},
-diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
-index 60aae01caa89..6efab1c455e1 100644
---- a/drivers/scsi/scsi_scan.c
-+++ b/drivers/scsi/scsi_scan.c
-@@ -897,6 +897,12 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
- */
- if (*bflags & BLIST_MAX_512)
- blk_queue_max_hw_sectors(sdev->request_queue, 512);
-+ /*
-+ * Max 1024 sector transfer length for targets that report incorrect
-+ * max/optimal lengths and relied on the old block layer safe default
-+ */
-+ else if (*bflags & BLIST_MAX_1024)
-+ blk_queue_max_hw_sectors(sdev->request_queue, 1024);
-
- /*
- * Some devices may not want to have a start command automatically
-diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h
-index 183eaab7c380..96e3f56519e7 100644
---- a/include/scsi/scsi_devinfo.h
-+++ b/include/scsi/scsi_devinfo.h
-@@ -36,5 +36,6 @@
- for sequential scan */
- #define BLIST_TRY_VPD_PAGES 0x10000000 /* Attempt to read VPD pages */
- #define BLIST_NO_RSOC 0x20000000 /* don't try to issue RSOC */
-+#define BLIST_MAX_1024 0x40000000 /* maximum 1024 sector cdb length */
-
- #endif
---
-2.1.0
-