lszfcp: sdev attributes for scsi_disk, block, integrity, queue, iosched

Show if command line option for more attribute details specified twice
and depending on existence in sysfs (i.e. not for non-disk such as tape).

Abbreviated examples:

$ lszfcp -DVeamm
/sys/devices/css0/0.0.0019/0.0.1880/0x50050763031bd327/0x4045400300000000
/sys/bus/ccw/drivers/zfcp/0.0.1880/host2/rport-2:0-0/target2:0:0/2:0:0:1073954885
/sys/block/sdd /sys/class/scsi_generic/sg3
Class = "zfcp_unit"
    access_denied       = "0"
    access_readonly     = "0"
    access_shared       = "0"
    failed              = "0"
    in_recovery         = "0"
    status              = "0x54000000"
Class = "scsi_device"
    ...
    modalias            = "scsi:t-0x00"
    model               = "2107900"
    scsi_level          = "6"
    state               = "running"
    type                = "0"
    ...
    zfcp_access_denied  = "0"
    zfcp_failed         = "0"
    zfcp_in_recovery    = "0"
    zfcp_status         = "0x54000000"
Class = "scsi_disk"
    allow_restart       = "0"
    app_tag_own         = "1"
    cache_type          = "write back"
    FUA                 = "0"
    manage_start_stop   = "0"
    max_medium_access_timeouts = "2"
    max_write_same_blocks = "65535"
    protection_mode     = "dix1"
    protection_type     = "1"
    provisioning_mode   = "unmap"
    thin_provisioning   = "1"
    zeroing_mode        = "writesame"
Class = "block"
    alignment_offset    = "0"
    capability          = "50"
    dev                 = "8:48"
    discard_alignment   = "0"
    size                = "2097152"
    ...
    uevent              = "MAJOR=8"
Class = "block_integrity"
    device_is_integrity_capable = "1"
    format              = "T10-DIF-TYPE1-IP"
    protection_interval_bytes = "512"
    read_verify         = "1"
    tag_size            = "2"
    write_generate      = "1"
Class = "block_queue"
    add_random          = "1"
    chunk_sectors       = "0"
    dax                 = "0"
    discard_granularity = "1073741824"
    discard_max_bytes   = "4294966784"
    discard_max_hw_bytes = "4294966784"
    discard_zeroes_data = "0"
    hw_sector_size      = "512"
    io_poll             = "0"
    io_poll_delay       = "0"
    iostats             = "1"
    logical_block_size  = "512"
    max_discard_segments = "1"
    max_hw_sectors_kb   = "1076"
    max_integrity_segments = "269"
    max_sectors_kb      = "1076"
    max_segments        = "269"
    max_segment_size    = "4096"
    minimum_io_size     = "512"
    nomerges            = "0"
    nr_requests         = "128"
    optimal_io_size     = "0"
    physical_block_size = "512"
    read_ahead_kb       = "512"
    rotational          = "1"
    rq_affinity         = "1"
    scheduler           = "noop [deadline] cfq"
    write_cache         = "write back"
    write_same_max_bytes = "33553920"
    write_zeroes_max_bytes = "33553920"
    zoned               = "none"
Class = "block_queue_iosched"
    fifo_batch          = "16"
    front_merges        = "1"
    read_expire         = "500"
    write_expire        = "5000"
    writes_starved      = "2"

/sys/devices/css0/0.0.0222/0.0.3c80/0x2002000e1115c62f/0x0000000000000000
/sys/bus/ccw/drivers/zfcp/0.0.3c80/host4/rport-4:0-2/target4:0:2/4:0:2:0
Class = "zfcp_unit"
    access_denied       = "0"
    access_readonly     = "0"
    access_shared       = "0"
    failed              = "0"
    in_recovery         = "0"
    status              = "0x54000000"
Class = "scsi_device"
    ...
    modalias            = "scsi:t-0x01"
    model               = "ULT3580-TD6"
    scsi_level          = "7"
    state               = "running"
    type                = "1"
    ...
    zfcp_access_denied  = "0"
    zfcp_failed         = "0"
    zfcp_in_recovery    = "0"
    zfcp_status         = "0x54000000"

/sys/devices/css0/0.0.0222/0.0.3c80/0x2002000e1115c62f/0x0001000000000000
/sys/bus/ccw/drivers/zfcp/0.0.3c80/host4/rport-4:0-2/target4:0:2/4:0:2:1
Class = "zfcp_unit"
    access_denied       = "0"
    access_readonly     = "0"
    access_shared       = "0"
    failed              = "0"
    in_recovery         = "0"
    status              = "0x54000000"
Class = "scsi_device"
    ...
    modalias            = "scsi:t-0x08"
    model               = "3573-TL"
    scsi_level          = "6"
    state               = "running"
    type                = "8"
    ...
    zfcp_access_denied  = "0"
    zfcp_failed         = "0"
    zfcp_in_recovery    = "0"
    zfcp_status         = "0x54000000"

/sys/devices/css0/0.0.0222/0.0.3c80/0x500507630313d327/0xffffffffffffffff failed
-
Class = "zfcp_unit"
    access_denied       = "0"
    access_readonly     = "0"
    access_shared       = "0"
    failed              = "1"
    in_recovery         = "0"
    status              = "0x00000000"

Signed-off-by: Steffen Maier <maier@linux.ibm.com>
Reviewed-by: Jens Remus <jremus@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
Steffen Maier
2019-02-19 18:21:21 +01:00
committed by Jan Höppner
parent f67758160e
commit a20cabccc4
2 changed files with 35 additions and 0 deletions

View File

@@ -115,6 +115,8 @@ OPTIONS:
-a, --attributes show attributes
-m, --moreattrs show more attributes
(host: css; port: zfcp_port; SCSI device: zfcp_unit)
specify twice to show more attributes for SCSI devices
(scsi_disk,block,integrity,queue,iosched)
-V, --verbose show sysfs paths of associated class
and bus devices
-e, --extended extended output format
@@ -445,6 +447,30 @@ show_devices()
if $SHOW_ATTRIBUTES; then
echo 'Class = "scsi_device"'
show_attributes "$SCSI_DEVICE_PATH"
fi
if $SHOW_ATTRIBUTES && [ $SHOW_MORE_ATTRS -ge 2 ]; then
if [ -d $SCSI_DEVICE_PATH/scsi_disk ]; then
echo 'Class = "scsi_disk"'
show_attributes "$SCSI_DEVICE_PATH/scsi_disk/$(basename $SCSI_DEVICE_PATH)"
fi
if [ -d $SCSI_DEVICE_PATH/block ]; then
echo 'Class = "block"'
show_attributes "$SCSI_DEVICE_PATH/block/*/"
fi
if [ -d $SCSI_DEVICE_PATH/block/*/integrity ]; then
echo 'Class = "block_integrity"'
show_attributes "$SCSI_DEVICE_PATH/block/*/integrity"
fi
if [ -d $SCSI_DEVICE_PATH/block/*/queue ]; then
echo 'Class = "block_queue"'
show_attributes "$SCSI_DEVICE_PATH/block/*/queue"
fi
if [ -d $SCSI_DEVICE_PATH/block/*/queue/iosched ]; then
echo 'Class = "block_queue_iosched"'
show_attributes "$SCSI_DEVICE_PATH/block/*/queue/iosched"
fi
fi
if $SHOW_ATTRIBUTES; then
echo
fi
done

View File

@@ -45,6 +45,10 @@ sysfs for the listed object.
Option "-m" together with option "-a" shows sysfs attributes if available for:
host: css (subchannel); port: zfcp_port; lun: zfcp_unit.
Specifying option "-m" twice together with option "-a"
additionally shows SCSI device sysfs attributes
if available for:
scsi_disk, block, block_integrity, block_queue, block_queue_iosched.
Option "-e" enables an extended output format.
It enumerates all hosts/ports/luns independent of their state.
@@ -67,6 +71,9 @@ Show the most interesting attributes of the specified objects.
.B -m, --moreattrs
Show more attributes of the specified objects.
Host: css (subchannel). Port: zfcp_port. Lun: zfcp_unit.
If specified twice,
show additional attributes of the specified SCSI device objects:
scsi_disk, block, block_integrity, block_queue, block_queue_iosched.
.TP
.B -D, --devices
List zfcp units and SCSI devices.
@@ -133,6 +140,8 @@ Show all adapters that match the given busid, all ports that match the given
busid and wwpnn and show all units that match the given busid, wwpn and lun.
.IP "lszfcp -b 0.0.0815 -p 0x5005123456789000 -l 0x0000000000000000 -H -P -D"
Generates same output as previous example.
.IP "lszfcp -HPDVeamm"
Generates the fullest output in the extended format.
.SH "SEE ALSO"
.BR lscss (8)