[PATCH 0/13] Chaining sg lists for bio IO commands v3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Third version of the patchset. Changes since v2:

- Get rid of ->next and use the ->page field as a next pointer.
  This saves some space in the scatterlist structure, at the cost
  of one extra sg segment per chained list. Should definitely be
  a space win.

- Cleanup linux/scatterlist.h, most of the stuff is outside
  the ARCH_HAS_SG_CHAIN ifdef now.

- Convert the x86-64 iommu code, enable it on x86-64.

- Convert all (hopefully) SCSI drivers to use the sg helpers so
  chaining can be supported globally. I collated all the SCSI
  driver patches into the 13/13 patch, as not to post a huge
  patch series. I would much appreciate some eye balls on this part,
  catching any dumb mistakes I may have made. The changes are usually
  trivial, but some are not and I do clown around occasionally :-)

Like v2, you still need to enable large commands manually for a
device, ala:

# cd /sys/block/sda/queue
# echo 1024 > max_segments
# cat max_hw_sectors_kb > max_sectors_kb

which would limit you to 1024 segments (effectively 8 scatterlists
chained), and should give you IO's of at least 4mb. You can go larger
than 1024, there's no real limit.

 arch/ia64/hp/sim/simscsi.c            |   23 +-
 arch/x86_64/kernel/pci-calgary.c      |   25 +-
 arch/x86_64/kernel/pci-gart.c         |   44 ++--
 arch/x86_64/kernel/pci-nommu.c        |    5 
 block/ll_rw_blk.c                     |   41 +++-
 crypto/digest.c                       |    2 
 crypto/scatterwalk.c                  |    2 
 crypto/scatterwalk.h                  |    2 
 drivers/ata/libata-core.c             |   30 +--
 drivers/infiniband/ulp/srp/ib_srp.c   |   22 +-
 drivers/scsi/3w-9xxx.c                |    8 
 drivers/scsi/3w-xxxx.c                |    8 
 drivers/scsi/53c700.c                 |   16 -
 drivers/scsi/BusLogic.c               |    7 
 drivers/scsi/NCR53c406a.c             |   18 +-
 drivers/scsi/a100u2w.c                |    9 -
 drivers/scsi/aacraid/aachba.c         |   29 +--
 drivers/scsi/advansys.c               |   21 +-
 drivers/scsi/aha1542.c                |   21 +-
 drivers/scsi/aha1740.c                |    8 
 drivers/scsi/aic7xxx/aic79xx_osm.c    |    3 
 drivers/scsi/aic7xxx/aic7xxx_osm.c    |   12 -
 drivers/scsi/aic94xx/aic94xx_task.c   |    6 
 drivers/scsi/arcmsr/arcmsr_hba.c      |   11 -
 drivers/scsi/dc395x.c                 |    7 
 drivers/scsi/dpt_i2o.c                |   13 -
 drivers/scsi/eata.c                   |    8 
 drivers/scsi/esp_scsi.c               |    5 
 drivers/scsi/gdth.c                   |   45 ++---
 drivers/scsi/hptiop.c                 |    8 
 drivers/scsi/ibmmca.c                 |   11 -
 drivers/scsi/ibmvscsi/ibmvscsi.c      |    4 
 drivers/scsi/ide-scsi.c               |   31 ++-
 drivers/scsi/initio.c                 |   12 -
 drivers/scsi/ipr.c                    |    9 -
 drivers/scsi/ips.c                    |   74 ++++----
 drivers/scsi/iscsi_tcp.c              |   43 ++--
 drivers/scsi/jazz_esp.c               |   27 +--
 drivers/scsi/lpfc/lpfc_scsi.c         |    9 -
 drivers/scsi/mac53c94.c               |    9 -
 drivers/scsi/megaraid.c               |   13 -
 drivers/scsi/megaraid/megaraid_mbox.c |    7 
 drivers/scsi/megaraid/megaraid_sas.c  |   16 -
 drivers/scsi/mesh.c                   |   12 -
 drivers/scsi/ncr53c8xx.c              |    7 
 drivers/scsi/nsp32.c                  |    9 -
 drivers/scsi/pcmcia/sym53c500_cs.c    |   18 +-
 drivers/scsi/qla1280.c                |   66 ++++---
 drivers/scsi/qla2xxx/qla_iocb.c       |    9 -
 drivers/scsi/qla4xxx/ql4_iocb.c       |    8 
 drivers/scsi/qlogicfas408.c           |    9 -
 drivers/scsi/qlogicpti.c              |   15 -
 drivers/scsi/scsi_debug.c             |   14 -
 drivers/scsi/scsi_lib.c               |  230 +++++++++++++++++++-------
 drivers/scsi/scsi_tgt_lib.c           |    4 
 drivers/scsi/sym53c416.c              |    9 -
 drivers/scsi/sym53c8xx_2/sym_glue.c   |    7 
 drivers/scsi/u14-34f.c                |   10 -
 drivers/scsi/ultrastor.c              |   10 -
 drivers/scsi/wd7000.c                 |    7 
 include/asm-i386/dma-mapping.h        |   13 -
 include/asm-i386/scatterlist.h        |    2 
 include/asm-x86_64/dma-mapping.h      |    3 
 include/asm-x86_64/scatterlist.h      |    2 
 include/linux/libata.h                |   16 +
 include/linux/scatterlist.h           |   55 ++++++
 include/scsi/scsi.h                   |    7 
 include/scsi/scsi_cmnd.h              |    3 
 68 files changed, 753 insertions(+), 516 deletions(-)


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux