Skip to contentSkip to conversation

scsi sysfs design, ch driver

DISCUSSION Douglas Gilbert 2 participants 2 messages Oct 16, 2005 SCSI

lore
Share & tools
lore
#0 lore raw

I am trying to map programmatically from an sg device to whatever [if it has a corresponding upper level device]. The code is looking at this directory:
/sys/devices/pseudo_0/adapter0/host1/target1:0:0/1:0:0:0

and is confronted with these choices:

bus             iocounterbits  power        scsi_changer:sch0    timeout
delete          iodone_cnt     queue_depth  scsi_device:1:0:0:0  type
device_blocked  ioerr_cnt      queue_type   scsi_generic:sg0     vendor
driver          iorequest_cnt  rescan       scsi_level
generic         model          rev          state

Now if it was a block device (sd or sr) there would be a "block" symlink to follow; if it was a tape device there would be a "tape" symlink to follow. However as can be seen it is a medium changer, so why not a "changer" symlink? The "scsi_changer:sch0" symlink has a useless appendage IMO. The directory needs to be scanned to find it, and when followed, if my code is interested, then there are several ways to determine that its sysfs name is sch0.

So my question is why was "scsi_generic:sg0" form introduced, especially the ":sg0" part? It may help visually but it is a nuisance programmatically.

Doug Gilbert

#1 lore raw
Quoted 3 lines · Douglas Gilbert

So my question is why was "scsi_generic:sg0" form introduced, especially the ":sg0" part? It may help visually but it is a nuisance programmatically.

It was for the benefit of serial devices (and others) which may have several classes.

# ls /sys/bus/pci/devices/0000\:00\:04.0
bus     device  local_cpus  subsystem_device  tty:ttyS1
class   driver  modalias    subsystem_vendor  tty:ttyS2
config  irq     resource    tty:ttyS0         vendor

Without the :ttyS*, we'd have three links all called 'tty'.