diff --git a/scstadmin/scstadmin.sysfs/scst-0.9.00/lib/SCST/SCST.pm b/scstadmin/scstadmin.sysfs/scst-0.9.00/lib/SCST/SCST.pm index b56c4c5af..84638e78a 100644 --- a/scstadmin/scstadmin.sysfs/scst-0.9.00/lib/SCST/SCST.pm +++ b/scstadmin/scstadmin.sysfs/scst-0.9.00/lib/SCST/SCST.pm @@ -3241,6 +3241,7 @@ sub sessions { } foreach my $attribute (readdir($pHandle)) { + next if (($attribute eq '.') || ($attribute eq '..')); my $pPath = mkpath($sPath, $attribute); if ($attribute eq 'luns') { diff --git a/scstadmin/scstadmin.sysfs/scstadmin b/scstadmin/scstadmin.sysfs/scstadmin index f9a1fe972..12a6628c5 100755 --- a/scstadmin/scstadmin.sysfs/scstadmin +++ b/scstadmin/scstadmin.sysfs/scstadmin @@ -2148,7 +2148,44 @@ sub listTargets { } sub listSessions { + my $drivers = $SCST->drivers(); + foreach my $driver (@{$drivers}) { + my $targets = $SCST->targets($driver); + + foreach my $target (@{$targets}) { + my $had_sessions = FALSE; + + print "Driver/Target: $driver/$target\n\n"; + + my $sessions = $SCST->sessions($driver, $target); + foreach my $session (keys %{$sessions}) { + print "\tSession: $session\n\n"; + + my %attributes; + foreach my $attr (keys %{$$sessions{$session}}) { + if ($attr eq 'luns') { + foreach my $lun (keys %{$$sessions{$session}->{'luns'}}) { + $attributes{"LUN $lun"}->{'value'} = + $$sessions{$session}->{'luns'}->{$lun}; + } + } else { + $attributes{$attr}->{'value'} = $$sessions{$session}->{$attr}; + } + } + + listAttributes(\%attributes, TRUE); + + print "\n"; + + $had_sessions = TRUE; + } + + if (!$had_sessions) { + print "\t(no sessions)\n\n"; + } + } + } } sub listGroup {