From 5b9c8b0399a393ab578ec886070b1bf5e2d51a68 Mon Sep 17 00:00:00 2001 From: Mark Buechler Date: Fri, 24 Sep 2010 15:30:16 +0000 Subject: [PATCH] - Don't attempt to read write-only attributes within sessions. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2240 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- .../scst-0.9.00/lib/SCST/SCST.pm | 38 ++++++++++++++----- scstadmin/scstadmin.sysfs/scstadmin | 2 +- 2 files changed, 29 insertions(+), 11 deletions(-) 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 d573a1319..a68c45057 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 @@ -3301,18 +3301,36 @@ sub sessions { $self->luns($driver, $target, $group); } } else { - my $io = new IO::File $pPath, O_RDONLY; + my $mode = (stat($pPath))[2]; + if (-d $pPath) { + # Skip directories + } else { + if (!(($mode & S_IRUSR) >> 6)) { + $_sessions{$session}->{$attribute}->{'static'} = FALSE; + $_sessions{$session}->{$attribute}->{'value'} = undef; + } else { + my $is_static; + if (($mode & S_IWUSR) >> 6) { + $is_static = FALSE; + } else { + $is_static = TRUE; + } - if (!$io) { - $self->{'err_string'} = "sessions(): Unable to read ". - "session attribute '$attribute': $!"; - return undef; + my $io = new IO::File $pPath, O_RDONLY; + + if (!$io) { + $self->{'err_string'} = "sessions(): Unable to read ". + "session attribute '$attribute': $!"; + return undef; + } + + my $value = <$io>; + chomp $value; + + $_sessions{$session}->{$attribute}->{'value'} = $value; + $_sessions{$session}->{$attribute}->{'static'} = $is_static; + } } - - my $value = <$io>; - chomp $value; - - $_sessions{$session}->{$attribute} = $value; } } } diff --git a/scstadmin/scstadmin.sysfs/scstadmin b/scstadmin/scstadmin.sysfs/scstadmin index 582ff8a27..1f2f4e2a4 100755 --- a/scstadmin/scstadmin.sysfs/scstadmin +++ b/scstadmin/scstadmin.sysfs/scstadmin @@ -2399,7 +2399,7 @@ sub listSessions { $$sessions{$session}->{'luns'}->{$lun}; } } else { - $attributes{$attr}->{'value'} = $$sessions{$session}->{$attr}; + $attributes{$attr}->{'value'} = $$sessions{$session}->{$attr}->{'value'}; } }