--- /dev/null
+Index: linux-4.4.59-1/block/blk-settings.c
+===================================================================
+--- linux-4.4.59-1.orig/block/blk-settings.c
++++ linux-4.4.59-1/block/blk-settings.c
+@@ -20,6 +20,12 @@ EXPORT_SYMBOL(blk_max_low_pfn);
+
+ unsigned long blk_max_pfn;
+
++int default_max_sectors = BLK_DEF_MAX_SECTORS;
++module_param(default_max_sectors, int, 0);
++
++int default_max_segments = BLK_MAX_SEGMENTS;
++module_param(default_max_segments, int, 0);
++
+ /**
+ * blk_queue_prep_rq - set a prepare_request function for queue
+ * @q: queue
+@@ -87,7 +93,7 @@ EXPORT_SYMBOL_GPL(blk_queue_lld_busy);
+ */
+ void blk_set_default_limits(struct queue_limits *lim)
+ {
+- lim->max_segments = BLK_MAX_SEGMENTS;
++ lim->max_segments = default_max_segments;
+ lim->max_integrity_segments = 0;
+ lim->seg_boundary_mask = BLK_SEG_BOUNDARY_MASK;
+ lim->virt_boundary_mask = 0;
+@@ -251,7 +257,7 @@ void blk_queue_max_hw_sectors(struct req
+
+ limits->max_hw_sectors = max_hw_sectors;
+ max_sectors = min_not_zero(max_hw_sectors, limits->max_dev_sectors);
+- max_sectors = min_t(unsigned int, max_sectors, BLK_DEF_MAX_SECTORS);
++ max_sectors = min_t(unsigned int, max_sectors, default_max_sectors);
+ limits->max_sectors = max_sectors;
+ q->backing_dev_info->io_pages = max_sectors >> (PAGE_SHIFT - 9);
+ }
+Index: linux-4.4.59-1/drivers/scsi/Kconfig
+===================================================================
+--- linux-4.4.59-1.orig/drivers/scsi/Kconfig
++++ linux-4.4.59-1/drivers/scsi/Kconfig
+@@ -236,6 +236,24 @@ config SCSI_LOGGING
+ there should be no noticeable performance impact as long as you have
+ logging turned off.
+
++config SCSI_MAX_SG_SEGMENTS
++ int "Maximum SCSI scatter gather segment size"
++ range 32 256
++ default "128"
++ depends on SCSI
++ help
++ Control the maximum limit for scatter gather buffers for the
++ SCSI device.
++
++config SCSI_MAX_SG_SEGMENTS
++ int "Maximum SCSI scatter gather segment size"
++ range 32 256
++ default "128"
++ depends on SCSI
++ help
++ Control the maximum limit for scatter gather buffers for the
++ SCSI device.
++
+ config SCSI_SCAN_ASYNC
+ bool "Asynchronous SCSI scanning"
+ depends on SCSI
+Index: linux-4.4.59-1/drivers/message/fusion/Kconfig
+===================================================================
+--- linux-4.4.59-1.orig/drivers/message/fusion/Kconfig
++++ linux-4.4.59-1/drivers/message/fusion/Kconfig
+@@ -61,9 +61,9 @@ config FUSION_SAS
+ LSISAS1078
+
+ config FUSION_MAX_SGE
+- int "Maximum number of scatter gather entries (16 - 128)"
+- default "128"
+- range 16 128
++ int "Maximum number of scatter gather entries (16 - 256)"
++ default "256"
++ range 16 256
+ help
+ This option allows you to specify the maximum number of scatter-
+ gather entries per I/O. The driver default is 128, which matches
+Index: linux-4.4.59-1/drivers/message/fusion/mptbase.h
+===================================================================
+--- linux-4.4.59-1.orig/drivers/message/fusion/mptbase.h
++++ linux-4.4.59-1/drivers/message/fusion/mptbase.h
+@@ -166,10 +166,10 @@
+ * Set the MAX_SGE value based on user input.
+ */
+ #ifdef CONFIG_FUSION_MAX_SGE
+-#if CONFIG_FUSION_MAX_SGE < 16
++#if CONFIG_FUSION_MAX_SGE < 16
+ #define MPT_SCSI_SG_DEPTH 16
+-#elif CONFIG_FUSION_MAX_SGE > 128
+-#define MPT_SCSI_SG_DEPTH 128
++#elif CONFIG_FUSION_MAX_SGE > 256
++#define MPT_SCSI_SG_DEPTH 256
+ #else
+ #define MPT_SCSI_SG_DEPTH CONFIG_FUSION_MAX_SGE
+ #endif