Commit 9cb83c7529d929c00f37d821daed1942a1b20602
Committed by
Jens Axboe
1 parent
c0dcffd71d
Exists in
master
and in
4 other branches
[SCSI] add use_sg_chaining option to scsi_host_template
This option is true if a low-level driver can support sg chaining. This will be removed eventually when all the drivers are converted to support sg chaining. q->max_phys_segments is set to SCSI_MAX_SG_SEGMENTS if false. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Showing 39 changed files with 58 additions and 3 deletions Side-by-side Diff
- arch/ia64/hp/sim/simscsi.c
- drivers/scsi/3w-9xxx.c
- drivers/scsi/3w-xxxx.c
- drivers/scsi/BusLogic.c
- drivers/scsi/NCR53c406a.c
- drivers/scsi/a100u2w.c
- drivers/scsi/aacraid/linit.c
- drivers/scsi/aha1740.c
- drivers/scsi/aic7xxx/aic79xx_osm.c
- drivers/scsi/aic7xxx/aic7xxx_osm.c
- drivers/scsi/aic7xxx_old.c
- drivers/scsi/arcmsr/arcmsr_hba.c
- drivers/scsi/dc395x.c
- drivers/scsi/dpt_i2o.c
- drivers/scsi/eata.c
- drivers/scsi/hosts.c
- drivers/scsi/hptiop.c
- drivers/scsi/ibmmca.c
- drivers/scsi/ibmvscsi/ibmvscsi.c
- drivers/scsi/initio.c
- drivers/scsi/lpfc/lpfc_scsi.c
- drivers/scsi/mac53c94.c
- drivers/scsi/megaraid.c
- drivers/scsi/megaraid/megaraid_mbox.c
- drivers/scsi/megaraid/megaraid_sas.c
- drivers/scsi/mesh.c
- drivers/scsi/nsp32.c
- drivers/scsi/pcmcia/sym53c500_cs.c
- drivers/scsi/qla2xxx/qla_os.c
- drivers/scsi/qla4xxx/ql4_os.c
- drivers/scsi/qlogicfas.c
- drivers/scsi/scsi_lib.c
- drivers/scsi/stex.c
- drivers/scsi/sym53c416.c
- drivers/scsi/sym53c8xx_2/sym_glue.c
- drivers/scsi/u14-34f.c
- drivers/scsi/ultrastor.c
- drivers/scsi/wd7000.c
- include/scsi/scsi_host.h
arch/ia64/hp/sim/simscsi.c
drivers/scsi/3w-9xxx.c
drivers/scsi/3w-xxxx.c
drivers/scsi/BusLogic.c
drivers/scsi/NCR53c406a.c
... | ... | @@ -1066,7 +1066,8 @@ |
1066 | 1066 | .sg_tablesize = 32 /*SG_ALL*/ /*SG_NONE*/, |
1067 | 1067 | .cmd_per_lun = 1 /* commands per lun */, |
1068 | 1068 | .unchecked_isa_dma = 1 /* unchecked_isa_dma */, |
1069 | - .use_clustering = ENABLE_CLUSTERING | |
1069 | + .use_clustering = ENABLE_CLUSTERING, | |
1070 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
1070 | 1071 | }; |
1071 | 1072 | |
1072 | 1073 | #include "scsi_module.c" |
drivers/scsi/a100u2w.c
drivers/scsi/aacraid/linit.c
drivers/scsi/aha1740.c
drivers/scsi/aic7xxx/aic79xx_osm.c
... | ... | @@ -766,6 +766,7 @@ |
766 | 766 | .max_sectors = 8192, |
767 | 767 | .cmd_per_lun = 2, |
768 | 768 | .use_clustering = ENABLE_CLUSTERING, |
769 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
769 | 770 | .slave_alloc = ahd_linux_slave_alloc, |
770 | 771 | .slave_configure = ahd_linux_slave_configure, |
771 | 772 | .target_alloc = ahd_linux_target_alloc, |
drivers/scsi/aic7xxx/aic7xxx_osm.c
... | ... | @@ -747,6 +747,7 @@ |
747 | 747 | .max_sectors = 8192, |
748 | 748 | .cmd_per_lun = 2, |
749 | 749 | .use_clustering = ENABLE_CLUSTERING, |
750 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
750 | 751 | .slave_alloc = ahc_linux_slave_alloc, |
751 | 752 | .slave_configure = ahc_linux_slave_configure, |
752 | 753 | .target_alloc = ahc_linux_target_alloc, |
drivers/scsi/aic7xxx_old.c
drivers/scsi/arcmsr/arcmsr_hba.c
... | ... | @@ -122,6 +122,7 @@ |
122 | 122 | .max_sectors = ARCMSR_MAX_XFER_SECTORS, |
123 | 123 | .cmd_per_lun = ARCMSR_MAX_CMD_PERLUN, |
124 | 124 | .use_clustering = ENABLE_CLUSTERING, |
125 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
125 | 126 | .shost_attrs = arcmsr_host_attrs, |
126 | 127 | }; |
127 | 128 | #ifdef CONFIG_SCSI_ARCMSR_AER |
drivers/scsi/dc395x.c
drivers/scsi/dpt_i2o.c
drivers/scsi/eata.c
... | ... | @@ -523,7 +523,8 @@ |
523 | 523 | .slave_configure = eata2x_slave_configure, |
524 | 524 | .this_id = 7, |
525 | 525 | .unchecked_isa_dma = 1, |
526 | - .use_clustering = ENABLE_CLUSTERING | |
526 | + .use_clustering = ENABLE_CLUSTERING, | |
527 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
527 | 528 | }; |
528 | 529 | |
529 | 530 | #if !defined(__BIG_ENDIAN_BITFIELD) && !defined(__LITTLE_ENDIAN_BITFIELD) |
drivers/scsi/hosts.c
... | ... | @@ -343,6 +343,7 @@ |
343 | 343 | shost->use_clustering = sht->use_clustering; |
344 | 344 | shost->ordered_tag = sht->ordered_tag; |
345 | 345 | shost->active_mode = sht->supported_mode; |
346 | + shost->use_sg_chaining = sht->use_sg_chaining; | |
346 | 347 | |
347 | 348 | if (sht->max_host_blocked) |
348 | 349 | shost->max_host_blocked = sht->max_host_blocked; |
drivers/scsi/hptiop.c
drivers/scsi/ibmmca.c
drivers/scsi/ibmvscsi/ibmvscsi.c
drivers/scsi/initio.c
drivers/scsi/lpfc/lpfc_scsi.c
... | ... | @@ -1438,6 +1438,7 @@ |
1438 | 1438 | .scan_finished = lpfc_scan_finished, |
1439 | 1439 | .this_id = -1, |
1440 | 1440 | .sg_tablesize = LPFC_SG_SEG_CNT, |
1441 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
1441 | 1442 | .cmd_per_lun = LPFC_CMD_PER_LUN, |
1442 | 1443 | .use_clustering = ENABLE_CLUSTERING, |
1443 | 1444 | .shost_attrs = lpfc_hba_attrs, |
... | ... | @@ -1460,6 +1461,7 @@ |
1460 | 1461 | .sg_tablesize = LPFC_SG_SEG_CNT, |
1461 | 1462 | .cmd_per_lun = LPFC_CMD_PER_LUN, |
1462 | 1463 | .use_clustering = ENABLE_CLUSTERING, |
1464 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
1463 | 1465 | .shost_attrs = lpfc_vport_attrs, |
1464 | 1466 | .max_sectors = 0xFFFF, |
1465 | 1467 | }; |
drivers/scsi/mac53c94.c
drivers/scsi/megaraid.c
... | ... | @@ -4492,6 +4492,7 @@ |
4492 | 4492 | .sg_tablesize = MAX_SGLIST, |
4493 | 4493 | .cmd_per_lun = DEF_CMD_PER_LUN, |
4494 | 4494 | .use_clustering = ENABLE_CLUSTERING, |
4495 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
4495 | 4496 | .eh_abort_handler = megaraid_abort, |
4496 | 4497 | .eh_device_reset_handler = megaraid_reset, |
4497 | 4498 | .eh_bus_reset_handler = megaraid_reset, |
drivers/scsi/megaraid/megaraid_mbox.c
... | ... | @@ -361,6 +361,7 @@ |
361 | 361 | .eh_host_reset_handler = megaraid_reset_handler, |
362 | 362 | .change_queue_depth = megaraid_change_queue_depth, |
363 | 363 | .use_clustering = ENABLE_CLUSTERING, |
364 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
364 | 365 | .sdev_attrs = megaraid_sdev_attrs, |
365 | 366 | .shost_attrs = megaraid_shost_attrs, |
366 | 367 | }; |
drivers/scsi/megaraid/megaraid_sas.c
drivers/scsi/mesh.c
drivers/scsi/nsp32.c
... | ... | @@ -281,6 +281,7 @@ |
281 | 281 | .cmd_per_lun = 1, |
282 | 282 | .this_id = NSP32_HOST_SCSIID, |
283 | 283 | .use_clustering = DISABLE_CLUSTERING, |
284 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
284 | 285 | .eh_abort_handler = nsp32_eh_abort, |
285 | 286 | .eh_bus_reset_handler = nsp32_eh_bus_reset, |
286 | 287 | .eh_host_reset_handler = nsp32_eh_host_reset, |
drivers/scsi/pcmcia/sym53c500_cs.c
drivers/scsi/qla2xxx/qla_os.c
... | ... | @@ -132,6 +132,7 @@ |
132 | 132 | .this_id = -1, |
133 | 133 | .cmd_per_lun = 3, |
134 | 134 | .use_clustering = ENABLE_CLUSTERING, |
135 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
135 | 136 | .sg_tablesize = SG_ALL, |
136 | 137 | |
137 | 138 | /* |
... | ... | @@ -163,6 +164,7 @@ |
163 | 164 | .this_id = -1, |
164 | 165 | .cmd_per_lun = 3, |
165 | 166 | .use_clustering = ENABLE_CLUSTERING, |
167 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
166 | 168 | .sg_tablesize = SG_ALL, |
167 | 169 | |
168 | 170 | .max_sectors = 0xFFFF, |
drivers/scsi/qla4xxx/ql4_os.c
drivers/scsi/qlogicfas.c
drivers/scsi/scsi_lib.c
... | ... | @@ -1645,7 +1645,10 @@ |
1645 | 1645 | * converted, so better keep it safe. |
1646 | 1646 | */ |
1647 | 1647 | #ifdef ARCH_HAS_SG_CHAIN |
1648 | - blk_queue_max_phys_segments(q, SCSI_MAX_SG_CHAIN_SEGMENTS); | |
1648 | + if (shost->use_sg_chaining) | |
1649 | + blk_queue_max_phys_segments(q, SCSI_MAX_SG_CHAIN_SEGMENTS); | |
1650 | + else | |
1651 | + blk_queue_max_phys_segments(q, SCSI_MAX_SG_SEGMENTS); | |
1649 | 1652 | #else |
1650 | 1653 | blk_queue_max_phys_segments(q, SCSI_MAX_SG_SEGMENTS); |
1651 | 1654 | #endif |
drivers/scsi/stex.c
drivers/scsi/sym53c416.c
drivers/scsi/sym53c8xx_2/sym_glue.c
... | ... | @@ -1808,6 +1808,7 @@ |
1808 | 1808 | .eh_host_reset_handler = sym53c8xx_eh_host_reset_handler, |
1809 | 1809 | .this_id = 7, |
1810 | 1810 | .use_clustering = ENABLE_CLUSTERING, |
1811 | + .use_sg_chaining = ENABLE_SG_CHAINING, | |
1811 | 1812 | .max_sectors = 0xFFFF, |
1812 | 1813 | #ifdef SYM_LINUX_PROC_INFO_SUPPORT |
1813 | 1814 | .proc_info = sym53c8xx_proc_info, |
drivers/scsi/u14-34f.c
drivers/scsi/ultrastor.c
drivers/scsi/wd7000.c
include/scsi/scsi_host.h
... | ... | @@ -39,6 +39,9 @@ |
39 | 39 | #define DISABLE_CLUSTERING 0 |
40 | 40 | #define ENABLE_CLUSTERING 1 |
41 | 41 | |
42 | +#define DISABLE_SG_CHAINING 0 | |
43 | +#define ENABLE_SG_CHAINING 1 | |
44 | + | |
42 | 45 | enum scsi_eh_timer_return { |
43 | 46 | EH_NOT_HANDLED, |
44 | 47 | EH_HANDLED, |
... | ... | @@ -443,6 +446,15 @@ |
443 | 446 | unsigned ordered_tag:1; |
444 | 447 | |
445 | 448 | /* |
449 | + * true if the low-level driver can support sg chaining. this | |
450 | + * will be removed eventually when all the drivers are | |
451 | + * converted to support sg chaining. | |
452 | + * | |
453 | + * Status: OBSOLETE | |
454 | + */ | |
455 | + unsigned use_sg_chaining:1; | |
456 | + | |
457 | + /* | |
446 | 458 | * Countdown for host blocking with no commands outstanding |
447 | 459 | */ |
448 | 460 | unsigned int max_host_blocked; |
... | ... | @@ -586,6 +598,7 @@ |
586 | 598 | unsigned unchecked_isa_dma:1; |
587 | 599 | unsigned use_clustering:1; |
588 | 600 | unsigned use_blk_tcq:1; |
601 | + unsigned use_sg_chaining:1; | |
589 | 602 | |
590 | 603 | /* |
591 | 604 | * Host has requested that no further requests come through for the |