linux/drivers/scsi
James Bottomley 9927c68864 [SCSI] ses: add new Enclosure ULD
This adds support to SCSI for enclosure services devices. It also makes
use of the enclosure services added in an earlier patch to display the
enclosure topology in sysfs.

At the moment, the enclosures are SAS specific, but if anyone actually
has a non-SAS enclosure that follows the SES-2 standard, we can add that
as well.

On my Vitesse based system, the enclosures show up like this:

sparkweed:~# ls -l /sys/class/enclosure/0\:0\:1\:0/
total 0
-r--r--r-- 1 root root 4096 2008-02-03 15:44 components
lrwxrwxrwx 1 root root    0 2008-02-03 15:44 device -> ../../../devices/pci0000:01/0000:01:02.0/host0/port-0:0/expander-0:0/port-0:0:12/end_device-0:0:12/target0:0:1/0:0:1:0
drwxr-xr-x 2 root root    0 2008-02-03 15:44 SLOT 000
drwxr-xr-x 2 root root    0 2008-02-03 15:44 SLOT 001
drwxr-xr-x 2 root root    0 2008-02-03 15:44 SLOT 002
drwxr-xr-x 2 root root    0 2008-02-03 15:44 SLOT 003
drwxr-xr-x 2 root root    0 2008-02-03 15:44 SLOT 004
drwxr-xr-x 2 root root    0 2008-02-03 15:44 SLOT 005
lrwxrwxrwx 1 root root    0 2008-02-03 15:44 subsystem -> ../../enclosure
--w------- 1 root root 4096 2008-02-03 15:44 uevent

And the individual occupied slots like this:

sparkweed:~# ls -l /sys/class/enclosure/0\:0\:1\:0/SLOT\ 001/
total 0
-rw-r--r-- 1 root root 4096 2008-02-03 15:45 active
lrwxrwxrwx 1 root root    0 2008-02-03 15:45 device -> ../../../../devices/pci0000:01/0000:01:02.0/host0/port-0:0/expander-0:0/port-0:0:11/end_device-0:0:11/target0:0:0/0:0:0:0
-rw-r--r-- 1 root root 4096 2008-02-03 15:45 fault
-rw-r--r-- 1 root root 4096 2008-02-03 15:45 locate
-rw-r--r-- 1 root root 4096 2008-02-03 15:45 status
lrwxrwxrwx 1 root root    0 2008-02-03 15:45 subsystem -> ../../../enclosure_component
-r--r--r-- 1 root root 4096 2008-02-03 15:45 type
--w------- 1 root root 4096 2008-02-03 15:45 uevent

You can flash the various blinky lights by echoing to the fault and locate files.

>From the device's point of view, you can see it has an enclosure like this:

sparkweed:~# ls /sys/class/scsi_disk/0\:0\:0\:0/device/
block:sda                     generic        queue_depth          state
bsg:0:0:0:0                   iocounterbits  queue_type           subsystem
bus                           iodone_cnt     rescan               timeout
delete                        ioerr_cnt      rev                  type
device_blocked                iorequest_cnt  scsi_device:0:0:0:0  uevent
driver                        modalias       scsi_disk:0:0:0:0    vendor
enclosure_component:SLOT 001  model          scsi_generic:sg0
evt_media_change              power          scsi_level

Note the enclosure_component:SLOT 001 which shows where in the enclosure
this device fits.

The astute will notice that I'm using SCSI VPD Inquiries to identify the
devices.  This, unfortunately, won't work for SATA devices unless we do
some really nasty hacking about on the SAT because the only think that
knows the SAS addresses for SATA devices is libsas, not libata where the
SAT resides.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
2008-02-07 18:04:10 -06:00
..
aacraid [SCSI] aacraid: pci_set_dma_max_seg_size opened up for late model controllers 2008-02-07 18:02:44 -06:00
aic7xxx Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2008-02-04 07:58:52 -08:00
aic7xxx_old
aic94xx [SCSI] libsas: abstract STP task status into a function 2008-01-25 11:47:23 -06:00
arcmsr [SCSI] arcmsr: updates (1.20.00.15) 2008-02-07 18:02:44 -06:00
arm [SCSI] arm: convert to accessors and !use_sg cleanup 2008-02-07 18:02:34 -06:00
dpt
ibmvscsi Remove pointless casts from void pointers 2008-02-06 10:41:01 -08:00
libsas Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-01-25 17:19:08 -08:00
lpfc Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2008-02-04 07:58:52 -08:00
megaraid scsi: megaraid: trivial drop duplicate mutex.h include 2008-02-06 11:15:41 -08:00
pcmcia pcmcia: convert some internal-only ioaddr_t to unsigned int 2008-02-05 09:44:08 -08:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.02.00-k8. 2008-02-07 18:02:40 -06:00
qla4xxx [SCSI] qla4xxx: add async scan support 2008-02-07 18:02:35 -06:00
sym53c8xx_2 [SCSI] sym53c8xx: fix resid calculation 2008-02-07 18:02:34 -06:00
.gitignore [SCSI] 53c7xx: fix removal fallout 2008-01-11 18:22:30 -06:00
3w-9xxx.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
3w-9xxx.h [SCSI] 3w-9xxx: add support for 9690SA 2007-07-21 08:57:40 -05:00
3w-xxxx.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c [SCSI] replace sizeof sense_buffer with SCSI_SENSE_BUFFERSIZE 2008-01-23 11:29:27 -06:00
53c700.h [SCSI] 53c700: m68k support for the 53c700 SCSI core 2007-06-17 16:15:56 -05:00
53c700.scr
a100u2w.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
a100u2w.h [SCSI] a100u2w: Convert into Linux style 2007-06-17 16:09:29 -05:00
a2091.c cleanup after APUS removal 2008-02-06 10:41:01 -08:00
a2091.h
a3000.c cleanup after APUS removal 2008-02-06 10:41:01 -08:00
a3000.h
a4000t.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
advansys.c [SCSI] advansys: make 3 functions static 2008-02-07 18:02:43 -06:00
aha152x.c [SCSI] aha152x: Use scsi_eh API for REQUEST_SENSE invocation 2008-01-11 18:22:34 -06:00
aha152x.h [SCSI] aha152x: fix debug mode symbol conflict 2007-08-04 09:11:06 -05:00
aha1542.c MAINTAINERS: remove Adam Fritzler, remove his email address in other sources 2008-02-03 16:36:24 +02:00
aha1542.h
aha1740.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
aha1740.h
aic7xxx_old.c Remove pointless casts from void pointers 2008-02-06 10:41:01 -08:00
atari_dma_emul.c
atari_NCR5380.c [SCSI] atari_NCR5380, sun3_NCR5380: operator precedence fix 2008-01-11 18:28:57 -06:00
atari_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
atari_scsi.h
atp870u.c [SCSI] atp870u: convert to accessors and !use_sg cleanup 2008-01-11 18:22:38 -06:00
atp870u.h
BusLogic.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
BusLogic.h
bvme6000_scsi.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
ch.c [SCSI] ch: remove forward declarations 2008-01-25 09:22:12 -06:00
constants.c [SCSI] Add Documentation and integrate into docbook build 2008-01-11 18:22:40 -06:00
dc395x.c [SCSI] dc395x: fix uninitialized var warning 2008-02-07 18:02:43 -06:00
dc395x.h
dmx3191d.c
dpt_i2o.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
dpti.h revert "dpt_i2o: convert to SCSI hotplug model" 2007-12-10 19:43:54 -08:00
dtc.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
dtc.h
eata_generic.h
eata_pio.c [SCSI] aic7xxx_old, eata_pio, ips, libsas: don't zero out sense_buffer in queuecommand 2008-01-23 11:29:26 -06:00
eata_pio.h
eata.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
esp_scsi.c esp_scsi: fix reset cleanup spinlock recursion 2007-12-10 19:43:55 -08:00
esp_scsi.h [SCSI] ESP: Revert ESP_BUS_TIMEOUT back down to 250 2007-07-31 10:51:25 -05:00
fd_mcs.c [SCSI] fd_mcs: convert to accessors and !use_sg cleanup 2008-01-11 18:22:35 -06:00
fdomain.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
fdomain.h
FlashPoint.c FlashPoint, use BIT instead of BITW 2007-10-19 11:53:42 -07:00
g_NCR5380_mmio.c
g_NCR5380.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c [SCSI] gdth: Move members from SCp to gdth_cmndinfo, stage 2 2007-10-12 14:56:09 -04:00
gdth_proc.h [SCSI] gdth: clean up host private data 2007-10-12 14:55:46 -04:00
gdth.c [SCSI] gdth: kill unneeded 'irq' argument 2008-01-11 18:28:14 -06:00
gdth.h [SCSI] gdth: !use_sg cleanup and use of scsi accessors 2007-10-12 14:56:13 -04:00
gvp11.c cleanup after APUS removal 2008-02-06 10:41:01 -08:00
gvp11.h
hosts.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
hptiop.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
hptiop.h [SCSI] hptiop: add more adapter models and other fixes 2008-01-11 18:28:06 -06:00
ibmmca.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
ide-scsi.c ide: add ide_read_[alt]status() inline helpers 2008-02-06 02:57:51 +01:00
imm.c [SCSI] imm: convert to accessors and !use_sg cleanup 2008-01-11 18:22:41 -06:00
imm.h
in2000.c [SCSI] in2000: convert to accessors and !use_sg cleanup 2008-01-11 18:22:36 -06:00
in2000.h
initio.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
initio.h
ipr.c drivers/scsi/: Spelling fixes 2008-02-03 17:28:22 +02:00
ipr.h
ips.c drivers/scsi/: Spelling fixes 2008-02-03 17:28:22 +02:00
ips.h [SCSI] ips: trim trailing whitespace 2008-01-11 18:27:59 -06:00
iscsi_tcp.c [SCSI] iscsi: fix up iscsi printk prefix 2008-02-07 18:02:37 -06:00
iscsi_tcp.h [SCSI] iscsi_tcp: enable sg chaining 2008-01-11 18:28:48 -06:00
jazz_esp.c
Kconfig [SCSI] ses: add new Enclosure ULD 2008-02-07 18:04:10 -06:00
lasi700.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
libiscsi.c [SCSI] libiscsi: fix session age rollover and remove cid encoding 2008-02-07 18:02:37 -06:00
libsrp.c [SCSI] implement scsi_data_buffer 2008-01-30 13:03:40 -06:00
mac53c94.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
mac53c94.h
mac_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
mac_scsi.h
Makefile [SCSI] ses: add new Enclosure ULD 2008-02-07 18:04:10 -06:00
megaraid.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
megaraid.h
mesh.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
mesh.h
mvme16x_scsi.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
mvme147.c
mvme147.h
ncr53c8xx.c [SCSI] ncr53c8xx: fix sense_buffer access bug 2008-01-30 13:03:39 -06:00
ncr53c8xx.h [SCSI] ncr53c8xx: Call scsi_host_put in release 2007-10-12 14:51:18 -04:00
NCR53c406a.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
NCR5380.c [SCSI] NCR5380: fix section mismatch 2008-01-23 13:44:31 -06:00
NCR5380.h [SCSI] NCR5380: Use scsi_eh API for REQUEST_SENSE invocation 2007-10-12 14:55:07 -04:00
NCR_D700.c [SCSI] kmalloc + memset conversion to kzalloc 2007-10-12 14:41:00 -04:00
NCR_D700.h
NCR_Q720.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
nsp32.h define global BIT macro 2007-10-19 11:53:42 -07:00
osst_detect.h
osst_options.h
osst.c [SCSI] osst: fix if (...) \n #if... cases missing semicolons when false 2007-10-27 14:31:06 -05:00
osst.h [SCSI] osst: Use mutex instead of semaphore 2007-10-12 14:50:55 -04:00
pas16.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
pas16.h
ppa.c [SCSI] ppa: convert to accessors and !use_sg cleanup 2008-01-11 18:22:41 -06:00
ppa.h
ps3rom.c [SCSI] ps3rom: sector size should be 512 bytes 2008-02-07 18:02:33 -06:00
ql1040_fw.h
ql1280_fw.h
ql12160_fw.h
qla1280.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
qla1280.h [SCSI] qla1280: eliminate wasted space in request and response ring 2007-10-23 12:35:35 -04:00
qlogicfas408.c [SG] Update drivers to use sg helpers 2007-10-22 21:19:53 +02:00
qlogicfas408.h
qlogicfas.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
qlogicpti_asm.c
qlogicpti.c [SCSI] replace sizeof sense_buffer with SCSI_SENSE_BUFFERSIZE 2008-01-23 11:29:27 -06:00
qlogicpti.h [SCSI] qlogicpti: Add a slave_configure method 2007-10-12 14:52:38 -04:00
raid_class.c
script_asm.pl
scsi_debug.c [SCSI] scsi_debug: add XDWRITEREAD_10 support 2008-01-30 13:14:25 -06:00
scsi_debug.h
scsi_devinfo.c [SCSI] kernel-doc: use correct function name 2008-01-11 18:22:44 -06:00
scsi_error.c [SCSI] bidirectional command support 2008-01-30 13:03:41 -06:00
scsi_ioctl.c [SCSI] sd,sr: add early detection of medium not present 2008-01-11 18:22:50 -06:00
scsi_lib_dma.c [SCSI] don't build scsi_dma_{map,unmap} for !HAS_DMA 2007-07-14 19:28:10 -05:00
scsi_lib.c [SCSI] fix BUG when sum(scatterlist) > bufflen 2008-02-07 18:02:44 -06:00
scsi_logging.h
scsi_module.c
scsi_netlink.c [NETNS]: Consolidate kernel netlink socket destruction. 2008-01-28 15:08:07 -08:00
scsi_priv.h [SCSI] don't use __GFP_DMA for sense buffers if not required 2008-01-23 11:37:44 -06:00
scsi_proc.c [SCSI] Add Documentation and integrate into docbook build 2008-01-11 18:22:40 -06:00
scsi_sas_internal.h
scsi_scan.c [SCSI] add missing transport configure points for target and host 2008-01-23 11:29:17 -06:00
scsi_sysctl.c [SCSI] small cleanups 2007-07-18 11:16:32 -05:00
scsi_sysfs.c [SCSI] add missing transport configure points for target and host 2008-01-23 11:29:17 -06:00
scsi_tgt_if.c [SCSI] tgt: convert to use the data buffer accessors 2008-01-11 18:22:30 -06:00
scsi_tgt_lib.c drivers/scsi/: Spelling fixes 2008-02-03 17:28:22 +02:00
scsi_tgt_priv.h [SCSI] tgt: add I_T nexus support 2007-10-12 14:37:50 -04:00
scsi_transport_api.h
scsi_transport_fc_internal.h [SCSI] fc_transport: add target driver support 2007-10-12 14:46:58 -04:00
scsi_transport_fc.c [SCSI] Add Documentation and integrate into docbook build 2008-01-11 18:22:40 -06:00
scsi_transport_iscsi.c [SCSI] iscsi: bump version to 2.0-868 2008-02-07 18:02:38 -06:00
scsi_transport_sas.c drivers/scsi/: Spelling fixes 2008-02-03 17:28:22 +02:00
scsi_transport_spi.c [SCSI] scsi_transport_spi: convert to attribute groups 2008-01-23 11:29:18 -06:00
scsi_transport_srp_internal.h [SCSI] scsi_transport_srp: remove tgt dependencies 2007-10-12 14:38:09 -04:00
scsi_transport_srp.c [SCSI] docbook and kernel-doc updates 2008-01-11 18:22:45 -06:00
scsi_typedefs.h
scsi_wait_scan.c
scsi.c [SCSI] kernel-doc: fix scsi docbook 2008-02-07 18:02:42 -06:00
scsi.h
scsicam.c [SCSI] Add Documentation and integrate into docbook build 2008-01-11 18:22:40 -06:00
sd.c [SCSI] sd: handle bad lba in sense information 2008-02-07 18:02:41 -06:00
ses.c [SCSI] ses: add new Enclosure ULD 2008-02-07 18:04:10 -06:00
sg.c blktrace: Add blktrace ioctls to SCSI generic devices 2008-01-28 10:04:46 +01:00
sgiwd93.c [SCSI] sgiwd93: use cached memory access to make driver work on IP28 2008-01-30 13:03:39 -06:00
sim710.c Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2007-07-22 11:36:49 -07:00
sni_53c710.c [SCSI] sni_53c710: Cleanup 2007-07-14 19:12:15 -05:00
sr_ioctl.c [SCSI] sr: fix test unit ready responses 2008-02-07 18:02:44 -06:00
sr_vendor.c
sr.c [SCSI] sr: fix test unit ready responses 2008-02-07 18:02:44 -06:00
sr.h [SCSI] sr: fix test unit ready responses 2008-02-07 18:02:44 -06:00
st_options.h
st.c [SCSI] st: convert to unlocked_ioctl 2008-01-23 11:29:29 -06:00
st.h [SCSI] st: Use mutex instead of semaphore 2007-07-31 10:44:01 -05:00
stex.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
sun3_NCR5380.c [SCSI] atari_NCR5380, sun3_NCR5380: operator precedence fix 2008-01-11 18:28:57 -06:00
sun3_scsi_vme.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
sun3_scsi.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
sun3_scsi.h
sun3x_esp.c [SCSI] sun3x_esp: convert to esp_scsi 2008-02-07 18:02:33 -06:00
sun_esp.c
sym53c416.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
sym53c416.h
t128.c [SCSI] NCR5380: Fix bugs and canonicalize irq handler usage 2007-11-25 12:19:26 +02:00
t128.h
tmscsim.c [SCSI] replace sizeof sense_buffer with SCSI_SENSE_BUFFERSIZE 2008-01-23 11:29:27 -06:00
tmscsim.h [SCSI] tmscsim: Further clean-up of the driver 2007-07-14 18:56:33 -05:00
u14-34f.c [SCSI] u14-34f: fix data direction bug 2008-02-07 18:02:44 -06:00
ultrastor.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
ultrastor.h
wd33c93.c [SCSI] wd33c93: convert to accessors and !use_sg cleanup 2008-01-11 18:22:35 -06:00
wd33c93.h Spelling fix: explicitly 2007-10-19 23:22:55 +02:00
wd7000.c [SCSI] remove use_sg_chaining 2008-01-30 13:14:02 -06:00
zalon.c
zorro7xx.c m68k: zorro7xx needs <asm/amigahw.h> 2007-11-29 09:24:52 -08:00