Linux scsi driver overview

iscsi initiator

config ISCSI_TCP
	tristate "iSCSI Initiator over TCP/IP"
	depends on SCSI && INET
	select CRYPTO
	select CRYPTO_MD5
	select CRYPTO_CRC32C
	select SCSI_ISCSI_ATTRS
	help
	 The iSCSI Driver provides a host with the ability to access storage
	 through an IP network. The driver uses the iSCSI protocol to transport
	 SCSI requests and responses over a TCP/IP network between the host
	 (the "initiator") and "targets".  Architecturally, the iSCSI driver
	 combines with the host‘s TCP/IP stack, network drivers, and Network
	 Interface Card (NIC) to provide the same functions as a SCSI or a
	 Fibre Channel (FC) adapter driver with a Host Bus Adapter (HBA).

	 To compile this driver as a module, choose M here: the
	 module will be called iscsi_tcp.

	 The userspace component needed to initialize the driver, documentation,
	 and sample configuration files can be found here:	
obj-$(CONFIG_ISCSI_TCP) 	+= libiscsi.o	libiscsi_tcp.o iscsi_tcp.o
config SCSI_ISCSI_ATTRS
	tristate "iSCSI Transport Attributes"
	depends on SCSI && NET
	select BLK_DEV_BSGLIB
	help
	  If you wish to export transport-specific information about
	  each attached iSCSI device to sysfs, say Y.
	  Otherwise, say N.
obj-$(CONFIG_SCSI_ISCSI_ATTRS)	+= scsi_transport_iscsi.o

FC initiator

source "drivers/scsi/qla2xxx/Kconfig"

obj-$(CONFIG_SCSI_QLA_FC)+= qla2xxx/

config SCSI_DEBUG
	tristate "SCSI debugging host simulator"
	depends on SCSI
	select CRC_T10DIF
	help
	  This is a host adapter simulator that can simulate multiple hosts
	  each with multiple dummy SCSI devices (disks). It defaults to one
	  host adapter with one dummy SCSI disk. Each dummy disk uses kernel
	  RAM as storage (i.e. it is a ramdisk). To save space when multiple
	  dummy disks are simulated, they share the same kernel RAM for 
	  their storage. See <http://sg.danny.cz/sg/sdebug26.html> for more
	  information. This driver is primarily of use to those testing the
	  SCSI and block subsystems. If unsure, say N.

obj-$(CONFIG_SCSI_DEBUG)	+= scsi_debug.o

source "drivers/scsi/device_handler/Kconfig"

config SCSI
	tristate "SCSI device support"
	depends on BLOCK
	select SCSI_DMA if HAS_DMA
	---help---
	  If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or
	  any other SCSI device under Linux, say Y and make sure that you know
	  the name of your SCSI host adapter (the card inside your computer
	  that "speaks" the SCSI protocol, also called SCSI controller),
	  because you will be asked for it.

	  You also need to say Y here if you have a device which speaks
	  the SCSI protocol.  Examples of this include the parallel port
	  version of the IOMEGA ZIP drive, USB storage devices, Fibre
	  Channel, and FireWire storage.

	  To compile this driver as a module, choose M here and read
	  <file:Documentation/scsi/scsi.txt>.
	  The module will be called scsi_mod.

	  However, do not compile this as a module if your root file system
	  (the one containing the directory /) is located on a SCSI device.
	  
obj-$(CONFIG_SCSI)		+= scsi_mod.o
scsi_mod-y			+= scsi.o hosts.o scsi_ioctl.o constants.o 				   scsicam.o scsi_error.o scsi_lib.o
scsi_mod-$(CONFIG_SCSI_DMA)	+= scsi_lib_dma.o
scsi_mod-y			+= scsi_scan.o scsi_sysfs.o scsi_devinfo.o
scsi_mod-$(CONFIG_SCSI_NETLINK)	+= scsi_netlink.o
scsi_mod-$(CONFIG_SYSCTL)	+= scsi_sysctl.o
scsi_mod-$(CONFIG_SCSI_PROC_FS)	+= scsi_proc.o
scsi_mod-y			+= scsi_trace.o
scsi_mod-$(CONFIG_PM)		+= scsi_pm.o
config SCSI_FC_ATTRS
	tristate "FiberChannel Transport Attributes"
	depends on SCSI
	select SCSI_NETLINK
	help
	  If you wish to export transport-specific information about
	  each attached FiberChannel device to sysfs, say Y.
	  Otherwise, say N.
obj-$(CONFIG_SCSI_FC_ATTRS) 	+= scsi_transport_fc.o
config BLK_DEV_SD
	tristate "SCSI disk support"
	depends on SCSI
	select CRC_T10DIF if BLK_DEV_INTEGRITY
	---help---
	  If you want to use SCSI hard disks, Fibre Channel disks,
	  Serial ATA (SATA) or Parallel ATA (PATA) hard disks,
	  USB storage or the SCSI or parallel port version of
	  the IOMEGA ZIP drive, say Y and read the SCSI-HOWTO,
	  the Disk-HOWTO and the Multi-Disk-HOWTO, available from
	  <http://www.tldp.org/docs.html#howto>. This is NOT for SCSI
	  CD-ROMs.

	  To compile this driver as a module, choose M here and read
	  <file:Documentation/scsi/scsi.txt>.
	  The module will be called sd_mod.

	  Do not compile this driver as a module if your root file system
	  (the one containing the directory /) is located on a SCSI disk.
	  In this case, do not compile the driver for your SCSI host adapter
obj-$(CONFIG_BLK_DEV_SD)	+= sd_mod.o

sd_mod-objs	:= sd.o
sd_mod-$(CONFIG_BLK_DEV_INTEGRITY) += sd_dif.o

config CHR_DEV_SG
	tristate "SCSI generic support"
	depends on SCSI
	---help---
	  If you want to use SCSI scanners, synthesizers or CD-writers or just
	  about anything having "SCSI" in its name other than hard disks,
	  CD-ROMs or tapes, say Y here. These won‘t be supported by the kernel
	  directly, so you need some additional software which knows how to
	  talk to these devices using the SCSI protocol:

	  For scanners, look at SANE (<http://www.sane-project.org/>). For CD
	  writer software look at Cdrtools
	  (<http://cdrecord.berlios.de/private/cdrecord.html>)
	  and for burning a "disk at once": CDRDAO
	  (<http://cdrdao.sourceforge.net/>). Cdparanoia is a high
	  quality digital reader of audio CDs (<http://www.xiph.org/paranoia/>).
	  For other devices, it‘s possible that you‘ll have to write the
	  driver software yourself. Please read the file
	  <file:Documentation/scsi/scsi-generic.txt> for more information.

	  To compile this driver as a module, choose M here and read
	  <file:Documentation/scsi/scsi.txt>. The module will be called sg.

	  If unsure, say N.
obj-$(CONFIG_CHR_DEV_SG)	+= sg.o

config SCSI_ENCLOSURE
	tristate "SCSI Enclosure Support"
	depends on SCSI && ENCLOSURE_SERVICES
	help
	  Enclosures are devices sitting on or in SCSI backplanes that
	  manage devices.  If you have a disk cage, the chances are that
	  it has an enclosure device.  Selecting this option will just allow
	  certain enclosure conditions to be reported and is not required.
obj-$(CONFIG_SCSI_ENCLOSURE)	+= ses.o

===========================================================================================

SCSI Disk

sd.c sd_dif.c

obj-$(CONFIG_SCSI)		+= scsi_mod.o
scsi_mod-y			+= scsi.o hosts.o scsi_ioctl.o constants.o 				   scsicam.o scsi_error.o scsi_lib.o
scsi_mod-$(CONFIG_SCSI_DMA)	+= scsi_lib_dma.o
scsi_mod-y			+= scsi_scan.o scsi_sysfs.o scsi_devinfo.o
scsi_mod-$(CONFIG_SCSI_NETLINK)	+= scsi_netlink.o
scsi_mod-$(CONFIG_SYSCTL)	+= scsi_sysctl.o
scsi_mod-$(CONFIG_SCSI_PROC_FS)	+= scsi_proc.o
scsi_mod-y			+= scsi_trace.o
scsi_mod-$(CONFIG_PM)		+= scsi_pm.o

sg.c

scsi_transport_fc.c

scsi_transport_iscsi.c

scsi_debug.c

FC Initiator Driver

obj-$(CONFIG_SCSI_QLA_FC)+= qla2xxx/

config SCSI_QLA_FC
	tristate "QLogic QLA2XXX Fibre Channel Support"
	depends on PCI && SCSI
	select SCSI_FC_ATTRS
	select FW_LOADER
	---help---
	This qla2xxx driver supports all QLogic Fibre Channel
	PCI and PCIe host adapters.

	By default, firmware for the ISP parts will be loaded
	via the Firmware Loader interface.

	ISP               Firmware Filename
	----------        -----------------
	21xx              ql2100_fw.bin
	22xx              ql2200_fw.bin
	2300, 2312, 6312  ql2300_fw.bin
	2322, 6322        ql2322_fw.bin
	24xx, 54xx        ql2400_fw.bin
	25xx              ql2500_fw.bin

	Upon request, the driver caches the firmware image until
	the driver is unloaded.

	Firmware images can be retrieved from:

		http://ldriver.qlogic.com/firmware/

	They are also included in the linux-firmware tree as well.
qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o qla_dbg.o qla_sup.o qla_attr.o qla_mid.o qla_dfs.o qla_bsg.o         qla_nx.o qla_mr.o qla_nx2.o qla_target.o
obj-$(CONFIG_SCSI_QLA_FC) += qla2xxx.o

ISCSI Initiator driver

obj-$(CONFIG_ISCSI_TCP) 	+= libiscsi.o	libiscsi_tcp.o iscsi_tcp.o
时间: 2024-10-05 12:24:28

Linux scsi driver overview的相关文章

Linux SCSI回调IO的分析

本文转载自:http://blog.csdn.net/xushiyan/article/details/6941640,如需参考,请访问原始链接地址. 没找到如何转载的入口,只好全文copy了. -----------------------------------分割线------------------------------------------------- LINUX 内核中 SCSI 子系统由 SCSI 上层,中间层和底层驱动模块 [1] 三部分组成,主要负责管理 SCSI 资源和

Program for Linux USB-devices driver step by step (ONE)

Program for Linux USB-devices driver 开始啃硬骨头~ 这里我打算一步步给出USB device driver 的demo,希望有心能能够共同交流学习. 希望认识更多对Linux有兴趣的geek. 目前由于环境和自身能力方面原因还没能做实物的测试,篇章的最后打算给出一个在x86上模拟USB读写的driver,以后能够做实物测试之后再更新this blog 我的联系方式: [email protected](由于偶不能登QQ,所以thunder bird的邮件只要

hacking a friend&#39;s Linux buzzer driver in OK335xS

1 /**************************************************************************** 2 * hacking a friend's Linux buzzer driver in OK335xS 3 * 说明: 4 * 解读朋友的Linux buzzer驱动,作为后续相关编码的参考. 5 * 6 * 2015-8-25 晴 深圳 南山平山村 曾剑锋 7 ************************************

Linux scsi disk driver

sd.c static void sd_config_discard(struct scsi_disk *, unsigned int); static void sd_config_write_same(struct scsi_disk *); static int  sd_revalidate_disk(struct gendisk *); static void sd_unlock_native_capacity(struct gendisk *disk); static int  sd_

Linux Block Driver 分析

前段时间看了Linux Block Layber的相关代码,主要看了Linux最简单的IO调度器NOOP的实现. 接下来总结下Linux BLOCK层work flow的机制. 继续把SCSI 探测设备这一部分的内容添加进来. 每个 块设备有一个request_queue,一个queue可以选择调度器去调度request.Linux实现了多种调度器,其中NOOP是最简单的.下面看一下noop是怎么工作的. 先看elevator的结构,struct elevator_ops;struct elev

SCSI driver

scsi_debug.c modprobe scsi_debug dev_size_mb=1024 clustering=1 opts=1 scsi_error.c scsi_send_eh_cmnd  - submit a scsi command as part of error recovery ses.c SCSI Enclosure Services SES driver(linux/driver/scsi/ses.c) to send SES command(SEND DIAGNOS

linux device driver —— ioctl

实现了应用程序和设备驱动通过ioctl通信.还是对设备驱动没什么感觉,贴一下代码吧. 在Ubuntu 16.04 64bit中测试通过 ioctldemo.c #include <linux/module.h> #include <linux/init.h> #include <linux/stat.h> #include <linux/types.h> #include <linux/kdev_t.h> #include <linux/f

linux platform device/driver(二)--Platform Device和Platform_driver注册过程

从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device 和 Platform_driver . Linux 中大部分的设备驱动,都可以使用这套机制 ,  设备用 Platform_device 表示,驱动用 Platform_driver 进行注册. Linux platform driver 机制和传统的 device driver  机制 ( 通过 driver_register 函数进行注册 ) 相比,一个十分明显的优势在于 platform 机制将设

Linux Ethernet Bonding Driver HOWTO 英文原版

Linux Ethernet Bonding Driver HOWTO Latest update: 12 November 2007 Initial release : Thomas Davis <tadavis at lbl.gov> Corrections, HA extensions : 2000/10/03-15 : - Willy Tarreau <willy at meta-x.org> - Constantine Gavrilov <const-g at xp