scstadmin: Avoid shadowing the errorString declaration

This patch does not change any functionality.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7936 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2019-02-16 18:44:33 +00:00
parent b56d94a153
commit 2a84df8445
2 changed files with 175 additions and 96 deletions

View File

@@ -644,6 +644,7 @@ sub initiators {
my $target = shift;
my $group = shift;
my @initiators;
my $errorString;
return (undef, "Too few arguments") if (!defined($driver) || !defined($target) ||
!defined($group));
@@ -652,7 +653,6 @@ sub initiators {
my $_path = make_path(SCST_TARGETS_DIR(), $driver, $target, SCST_GROUPS,
$group, SCST_INITIATORS);
if (!(opendir $iHandle, $_path)) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "initiators(): Driver '$driver' is not available";
} elsif ($self->targetExists($driver, $target) != TRUE) {
@@ -682,6 +682,7 @@ sub luns {
my $driver = shift;
my $target = shift;
my $group = shift;
my $errorString;
return (undef, "Too few arguments") if (!defined($driver) || !defined($target));
@@ -698,7 +699,6 @@ sub luns {
my $lHandle = new IO::Handle;
if (!(opendir $lHandle, $_path)) {
my $errorString;
if (defined($group) && $self->groupExists($driver, $target, $group) != TRUE) {
$errorString = "initiators(): Group '$group' does not exist";
} elsif ($self->driverExists($driver) != TRUE) {
@@ -828,13 +828,13 @@ sub deviceGroupDevices {
my $self = shift;
my $group = shift;
my @devices;
my $errorString;
return (undef, "Too few arguments") if (!defined($group));
my $dHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_DEVICES);
if (!(opendir $dHandle, $_path)) {
my $errorString;
if ($self->deviceGroupExists($group) != TRUE) {
$errorString = "deviceGroupDevices(): Device group '$group' does not exist";
} else {
@@ -860,13 +860,13 @@ sub targetGroups {
my $self = shift;
my $group = shift;
my @tgroups;
my $errorString;
return (undef, "Too few arguments") if (!defined($group));
my $dHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS);
if (!(opendir $dHandle, $_path)) {
my $errorString;
if ($self->deviceGroupExists($group) != TRUE) {
$errorString = "targetGroups(): Device group '$group' does not exist";
} else {
@@ -893,13 +893,13 @@ sub targetGroupTargets {
my $group = shift;
my $tgroup = shift;
my @targets;
my $errorString;
return (undef, "Too few arguments") if (!defined($group) || !defined($tgroup));
my $dHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup);
if (!(opendir $dHandle, $_path)) {
my $errorString;
if ($self->deviceGroupExists($group) != TRUE) {
$errorString = "targetGroupTargets(): Device group '$group' does not exist";
} elsif ($self->targetGroupExists($group, $tgroup) != TRUE) {
@@ -943,6 +943,7 @@ sub driverDynamicAttributes {
my $driver = shift;
my %attributes;
my $available;
my $errorString;
return (undef, "Too few arguments") if (!defined($driver));
@@ -961,7 +962,6 @@ sub driverDynamicAttributes {
SCST_MGMT_IO), O_RDONLY;
if (!$io) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "driverDynamicAttributes(): Driver '$driver' ".
"is not available";
@@ -1144,11 +1144,13 @@ sub targetType {
my $self = shift;
my $driver = shift;
my $target = shift;
my $errorString;
return (undef, "Too few arguments") if (!defined($driver) || !defined($target));
if ($self->driverIsVirtualCapable($driver)) {
my ($attribs, $errorString) = $self->targetAttributes($driver, $target);
my $attribs;
($attribs, $errorString) = $self->targetAttributes($driver, $target);
if (defined($$attribs{'hw_target'}) &&
($$attribs{'hw_target'}->{'value'} == TRUE)) {
@@ -1224,6 +1226,7 @@ sub targetDynamicAttributes {
my $driver = shift;
my %attributes;
my $available;
my $errorString;
return (undef, "Too few arguments") if (!defined($driver));
@@ -1242,7 +1245,6 @@ sub targetDynamicAttributes {
SCST_MGMT_IO), O_RDONLY;
if (!$io) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "targetDynamicAttributes(): Driver '$driver' ".
"is not available";
@@ -1728,6 +1730,7 @@ sub addDeviceGroupDevice {
my $self = shift;
my $group = shift;
my $device = shift;
my $errorString;
return SCST_C_DGRP_ADD_DEV_FAIL if (!defined($group) || !defined($device));
@@ -1769,8 +1772,9 @@ sub addDeviceGroupDevice {
my ($dgroups, $errorString) = $self->deviceGroups();
foreach my $dgroup (@{$dgroups}) {
my ($devs, $errorString) = $self->deviceGroupDevices($dgroup);
my $devs;
($devs, $errorString) = $self->deviceGroupDevices($dgroup);
foreach my $dev (@{$devs}) {
return SCST_C_DGRP_DEVICE_OTHER if ($dev eq $device);
}
@@ -2586,11 +2590,12 @@ sub deviceAttributes {
my $self = shift;
my $device = shift;
my %attributes;
my $errorString;
my $dca;
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_DEVICES_DIR(), $device);
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->deviceOpen($device) != TRUE) {
$errorString = "deviceAttributes(): Device '$device' is not open";
} else {
@@ -2599,7 +2604,7 @@ sub deviceAttributes {
return (undef, $errorString);
}
my ($dca, $errorString) = $self->deviceCreateAttributes($self->deviceHandler($device));
($dca, $errorString) = $self->deviceCreateAttributes($self->deviceHandler($device));
foreach my $attribute (readdir($pHandle)) {
next if ($attribute eq '.' || $attribute eq '..' ||
@@ -2722,11 +2727,11 @@ sub driverAttributes {
my $self = shift;
my $driver = shift;
my %attributes;
my $errorString;
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_TARGETS_DIR(), $driver);
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "driverAttributes(): Driver '$driver' is not available";
} else {
@@ -2853,13 +2858,13 @@ sub targetAttributes {
my $driver = shift;
my $target = shift;
my %attributes;
my $errorString;
return (undef, "Too few arguments") if (!defined($driver) || !defined($target));
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_TARGETS_DIR(), $driver, $target);
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "targetAttributes(): Driver '$driver' is not available";
} elsif ($self->targetExists($driver, $target) != TRUE) {
@@ -3005,12 +3010,12 @@ sub groupAttributes {
my $target = shift;
my $group = shift;
my %attributes;
my $errorString;
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_TARGETS_DIR(), $driver, $target, SCST_GROUPS,
$group);
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "groupAttributes(): Driver '$driver' is not available";
} elsif ($self->targetExists($driver, $target) != TRUE) {
@@ -3313,12 +3318,12 @@ sub initiatorAttributes {
my $group = shift;
my $initiator = shift;
my %attributes;
my $errorString;
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_TARGETS_DIR(), $driver, $target, SCST_GROUPS,
$group, SCST_INITIATORS, $initiator);
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "initiatorAttributes(): Driver '$driver' is not available";
} elsif ($self->targetExists($driver, $target) != TRUE) {
@@ -3444,11 +3449,11 @@ sub deviceGroupAttributes {
my $self = shift;
my $group = shift;
my %attributes;
my $errorString;
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group);
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->deviceGroupExists($group) != TRUE) {
$errorString = "deviceGroupAttributes(): Device group '$group' does not exist";
} else {
@@ -3522,11 +3527,11 @@ sub targetGroupAttributes {
my $group = shift;
my $tgroup = shift;
my %attributes;
my $errorString;
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup);
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->deviceGroupExists($group) != TRUE) {
$errorString = "targetGroupAttributes(): Device group '$group' does not exist";
} elsif ($self->targetGroupExists($group, $tgroup) != TRUE) {
@@ -3604,6 +3609,7 @@ sub targetGroupTargetAttributes {
my $tgt = shift;
my $local_tgt = shift;
my %attributes;
my $errorString;
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup, $tgt);
@@ -3612,7 +3618,6 @@ sub targetGroupTargetAttributes {
}
if (!(opendir $pHandle, $_path)) {
my $errorString;
if ($self->deviceGroupExists($group) != TRUE) {
$errorString = "targetGroupTargetAttributes(): Device group '$group' does not exist";
} elsif ($self->targetGroupExists($group, $tgroup) != TRUE) {
@@ -3894,6 +3899,7 @@ sub handlerAttributes {
my $self = shift;
my $handler = shift;
my %attributes;
my $errorString;
my ($a, $errorString) = devices($self, $handler);
$attributes{'devices'}->{'value'} = $a;
@@ -3901,7 +3907,6 @@ sub handlerAttributes {
my $hHandle = new IO::Handle;
my $_path = make_path(SCST_HANDLERS_DIR(), $handler);
if (!(opendir $hHandle, $_path)) {
my $errorString;
if ($self->handlerExists($handler) != TRUE) {
$errorString = "handlerAttributes(): Handler '$handler' is not available";
} else {
@@ -4042,11 +4047,11 @@ sub handlerDeviceExists {
sub devicesByHandler {
my $self = shift;
my $handler = shift;
my $errorString;
my ($attributes, $errorString) = $self->handlerAttributes($handler);
if (!defined($attributes)) {
my $errorString;
if ($self->handlerExists($handler) != TRUE) {
$errorString = "devicesByHandler(): Handler '$handler' is not available";
} else {
@@ -4094,6 +4099,7 @@ sub deviceCreateAttributes {
my $handler = shift;
my $available;
my %attributes;
my $errorString;
if (new_sysfs_interface()) {
my $io = new IO::File make_path(SCST_HANDLERS_DIR(), $handler,
@@ -4109,7 +4115,6 @@ sub deviceCreateAttributes {
SCST_MGMT_IO), O_RDONLY;
if (!$io) {
my $errorString;
if ($self->handlerExists($handler) != TRUE) {
$errorString = "deviceCreateAttributes(): Handler '$handler' ".
"is not available";
@@ -4314,6 +4319,7 @@ sub targetCreateAttributes {
my $driver = shift;
my $available;
my %attributes;
my $errorString;
if (new_sysfs_interface()) {
my $io = new IO::File make_path(SCST_TARGETS_DIR(), $driver,
@@ -4328,7 +4334,6 @@ sub targetCreateAttributes {
SCST_MGMT_IO), O_RDONLY;
if (!$io) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "targetCreateAttributes(): Driver '$driver' ".
"is not available";
@@ -4506,6 +4511,7 @@ sub lunCreateAttributes {
my $group = shift;
my $available;
my %attributes;
my $errorString;
my $_path;
@@ -4543,7 +4549,6 @@ sub lunCreateAttributes {
my $io = new IO::File $_path, O_RDONLY;
if (!$io) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "lunCreateAttributes(): Driver '$driver' ".
"is not available";
@@ -4628,6 +4633,7 @@ sub initiatorCreateAttributes {
my $group = shift;
my $available;
my %attributes;
my $errorString;
if (new_sysfs_interface()) {
# Do nothing - there are no initiator attributes (yet).
@@ -4638,7 +4644,6 @@ sub initiatorCreateAttributes {
O_RDONLY;
if (!$io) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "initiatorCreateAttributes(): Driver '$driver' ".
"is not available";
@@ -4680,6 +4685,7 @@ sub sessions {
my $driver = shift;
my $target = shift;
my %_sessions;
my $errorString;
return (undef, "Too few arguments") if (!defined($driver) || !defined($target));
@@ -4687,7 +4693,6 @@ sub sessions {
my $_path = make_path(SCST_TARGETS_DIR(), $driver, $target,
SCST_SESSIONS);
if (!(opendir $sHandle, $_path)) {
my $errorString;
if ($self->driverExists($driver) != TRUE) {
$errorString = "sessions(): Driver '$driver' ".
"is not available";

View File

@@ -1358,6 +1358,7 @@ sub main {
sub readWorkingConfig {
my $force = shift;
my $errorString;
print "\nCollecting current configuration: ";
@@ -1365,11 +1366,14 @@ sub readWorkingConfig {
# Get current handlers/devices
my ($handlers, $errorString) = $SCST->handlers();
my $handlers;
($handlers, $errorString) = $SCST->handlers();
immediateExit($errorString);
foreach my $handler (@{$handlers}) {
my ($devices, $errorString) = $SCST->devicesByHandler($handler);
my $devices;
($devices, $errorString) = $SCST->devicesByHandler($handler);
immediateExit($errorString);
$CURRENT{'handler'}->{$handler} = $devices;
}
@@ -1382,40 +1386,48 @@ sub readWorkingConfig {
foreach my $driver (@{$drivers}) {
my %empty;
$CURRENT{'assign'}->{$driver} = \%empty;
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
immediateExit($errorString);
foreach my $target (@{$targets}) {
my %empty;
$CURRENT{'assign'}->{$driver}->{$target} = \%empty;
my ($luns, $errorString) = $SCST->luns($driver, $target);
my $luns;
($luns, $errorString) = $SCST->luns($driver, $target);
$CURRENT{'assign'}->{$driver}->{$target}->{'LUN'} = $luns if (defined($luns));
my ($groups, $errorString) = $SCST->groups($driver, $target);
my $groups;
($groups, $errorString) = $SCST->groups($driver, $target);
immediateExit($errorString);
foreach my $group (@{$groups}) {
my ($initiators, $errorString) = $SCST->initiators($driver, $target, $group);
my $initiators;
($initiators, $errorString) = $SCST->initiators($driver, $target, $group);
immediateExit($errorString);
$CURRENT{'assign'}->{$driver}->{$target}->{'GROUP'}->{$group}->{'INITIATORS'} = $initiators;
my ($luns, $errorString) = $SCST->luns($driver, $target, $group);
($luns, $errorString) = $SCST->luns($driver, $target, $group);
$CURRENT{'assign'}->{$driver}->{$target}->{'GROUP'}->{$group}->{'LUN'} = $luns;
immediateExit($errorString);
}
}
}
my ($dgroups, $errorString) = $SCST->deviceGroups();
my $dgroups;
($dgroups, $errorString) = $SCST->deviceGroups();
immediateExit($errorString);
foreach my $dgroup (@{$dgroups}) {
my ($dgd, $errorString) = $SCST->deviceGroupDevices($dgroup);
my $dgd;
($dgd, $errorString) = $SCST->deviceGroupDevices($dgroup);
immediateExit($errorString);
$CURRENT{'dgroups'}->{$dgroup}->{'devices'} = $dgd;
my ($tgroups, $errorString) = $SCST->targetGroups($dgroup);
my $tgroups;
($tgroups, $errorString) = $SCST->targetGroups($dgroup);
immediateExit($errorString);
foreach my $tgroup (@{$tgroups}) {
my ($tgt, $errorString) = $SCST->targetGroupTargets($dgroup, $tgroup);
my $tgt;
($tgt, $errorString) = $SCST->targetGroupTargets($dgroup, $tgroup);
$CURRENT{'dgroups'}->{$dgroup}->{'tgroups'}->{$tgroup}->{'targets'} = $tgt;
}
}
@@ -1532,9 +1544,11 @@ sub serializeNkAttr {
sub isPassthroughDev {
my $dev = shift;
my $pt = FALSE;
my $errorString;
foreach my $handler (keys %{$CURRENT{'handler'}}) {
my ($ha, $errorString) = $SCST->handlerAttributes($handler);
my $ha;
($ha, $errorString) = $SCST->handlerAttributes($handler);
next if ($ha->{'mgmt'} !~ 'echo "add_device H:C:I:L"');
my @devs = @{$CURRENT{'handler'}->{$handler}};
for my $i (0 .. $#devs) {
@@ -1550,6 +1564,7 @@ sub isPassthroughDev {
# Returns 0 upon success and 1 upon error.
sub writeConfiguration {
my $nonkey = shift;
my $errorString;
my $io = new IO::File $CONFIGFILE, O_CREAT|O_WRONLY|O_TRUNC;
@@ -1563,7 +1578,8 @@ sub writeConfiguration {
print $io "# Automatically generated by $Version.\n\n";
{
my ($attributes, $errorString) = $SCST->scstAttributes();
my $attributes;
($attributes, $errorString) = $SCST->scstAttributes();
immediateExit($errorString);
print $io serializeKeyAttr("", $attributes);
@@ -1580,10 +1596,11 @@ sub writeConfiguration {
foreach my $handler (sort keys %{$CURRENT{'handler'}}) {
my $handler_buff;
my $handler_buff_nk;
my $handler_attrs;
my $attributes;
my ($handler_attrs, $errorString) = $SCST->deviceCreateAttributes($handler);
my ($attributes, $errorString) = $SCST->handlerAttributes($handler);
($handler_attrs, $errorString) = $SCST->deviceCreateAttributes($handler);
($attributes, $errorString) = $SCST->handlerAttributes($handler);
$handler_buff = serializeKeyAttr("\t", $attributes);
$handler_buff_nk = serializeNkAttr("\t", $attributes) if ($nonkey);
@@ -1593,11 +1610,11 @@ sub writeConfiguration {
foreach my $device (sort @{$devices}) {
$device_buff .= "\tDEVICE $device";
my ($attributes, $errorString) = $SCST->deviceAttributes($device);
my $attributes;
my $attribute_buff;
my $attribute_buff_nk;
($attributes, $errorString) = $SCST->deviceAttributes($device);
$attribute_buff = serializeKeyAttr("\t\t", $attributes, $handler_attrs);
$attribute_buff_nk = serializeNkAttr("\t\t", $attributes, $handler_attrs) if ($nonkey);
$attribute_buff .= "\n" if ($attribute_buff);
@@ -1638,28 +1655,29 @@ sub writeConfiguration {
foreach my $driver (sort keys %{$CURRENT{'assign'}}) {
my $driver_buff;
my ($drv_attrs, $errorString) = $SCST->driverAttributes($driver);
my $drv_attrs;
my $drv_attr_buff;
my $drv_attr_buff_nk;
($drv_attrs, $errorString) = $SCST->driverAttributes($driver);
$drv_attr_buff = serializeKeyAttr("\t", $drv_attrs);
$drv_attr_buff_nk = serializeNkAttr("\t", $drv_attrs) if ($nonkey);
$drv_attr_buff .= "\n" if ($drv_attr_buff);
$drv_attr_buff_nk .= "\n" if ($drv_attr_buff_nk);
my $targets = $CURRENT{'assign'}->{$driver};
my ($tgt_attrs, $errorString) = $SCST->targetCreateAttributes($driver);
my $tgt_attrs;
($tgt_attrs, $errorString) = $SCST->targetCreateAttributes($driver);
my $target_buff;
foreach my $target (sort keys %{$targets}) {
$target_buff .= "\tTARGET $target";
my ($attributes, $errorString) = $SCST->targetAttributes($driver, $target);
my $attributes;
my $attribute_buff;
my $attribute_buff_nk;
($attributes, $errorString) = $SCST->targetAttributes($driver, $target);
if (defined($$attributes{'hw_target'}) &&
($$attributes{'hw_target'}->{'value'} == TRUE)) {
$attribute_buff = "\t\tHW_TARGET\n\n";
@@ -1671,7 +1689,8 @@ sub writeConfiguration {
$attribute_buff_nk .= "\n" if ($attribute_buff_nk);
my $luns = $CURRENT{'assign'}->{$driver}->{$target}->{'LUN'};
my ($lun_attrs, $errorString) = $SCST->lunCreateAttributes($driver, $target);
my $lun_attrs;
($lun_attrs, $errorString) = $SCST->lunCreateAttributes($driver, $target);
my $t_lun_buff;
foreach my $lun (sort numerically keys %{$luns}) {
@@ -1685,7 +1704,8 @@ sub writeConfiguration {
$t_lun_buff .= "\t\tLUN $lun $lun_dev";
my ($attributes, $errorString) = $SCST->lunAttributes($driver, $target, $lun);
my $attributes;
($attributes, $errorString) = $SCST->lunAttributes($driver, $target, $lun);
my $l_attribute_buff =
serializeKeyAttr("\t\t\t",
$attributes,
@@ -1716,9 +1736,11 @@ sub writeConfiguration {
my $group_buff;
foreach my $group (sort keys %{$groups}) {
my ($lun_attrs, $errorString) = $SCST->lunCreateAttributes($driver, $target, $group);
my ($ini_attrs, $errorString) = $SCST->initiatorCreateAttributes($driver, $target, $group);
my $lun_attrs;
my $ini_attrs;
($lun_attrs, $errorString) = $SCST->lunCreateAttributes($driver, $target, $group);
($ini_attrs, $errorString) = $SCST->initiatorCreateAttributes($driver, $target, $group);
$group_buff .= "\t\tGROUP $group";
my $luns = $CURRENT{'assign'}->{$driver}->{$target}->{'GROUP'}->{$group}->{'LUN'};
@@ -1729,7 +1751,8 @@ sub writeConfiguration {
$lun_buff .= "\t\t\tLUN $lun $lun_dev";
my ($attributes, $errorString) = $SCST->lunAttributes($driver, $target, $lun, $group);
my $attributes;
($attributes, $errorString) = $SCST->lunAttributes($driver, $target, $lun, $group);
my $l_attribute_buff
= serializeKeyAttr("\t\t\t\t",
@@ -1761,7 +1784,8 @@ sub writeConfiguration {
foreach my $init (sort @{$inits}) {
$init_buff .= "\n\t\t\tINITIATOR " . escapeMeta($init);
my ($attributes, $errorString) = $SCST->initiatorAttributes($driver, $target, $group, $init);
my $attributes;
($attributes, $errorString) = $SCST->initiatorAttributes($driver, $target, $group, $init);
my $i_attribute_buff
= serializeKeyAttr("\t\t\t\t",
@@ -1787,7 +1811,8 @@ sub writeConfiguration {
}
}
my ($grp_attributes, $errorString) = $SCST->groupAttributes($driver, $target, $group);
my $grp_attributes;
($grp_attributes, $errorString) = $SCST->groupAttributes($driver, $target, $group);
my $g_attribute_buff
= serializeKeyAttr("\t\t\t",
$grp_attributes);
@@ -1858,7 +1883,8 @@ sub writeConfiguration {
}
}
my ($dga, $errorString) = $SCST->aluaAttributes();
my $dga;
($dga, $errorString) = $SCST->aluaAttributes();
my $dga_buff = serializeKeyAttr("\t", $dga);
my $dga_buff_nk = serializeNkAttr("\t", $dga) if ($nonkey);
if ($dga_buff_nk) {
@@ -1873,12 +1899,11 @@ sub writeConfiguration {
foreach my $dgroup (sort keys %{$CURRENT{'dgroups'}}) {
my $dgroup_buff;
my ($dgroup_attrs, $errorString) = $SCST->deviceGroupAttributes($dgroup);
my $dgroup_attrs;
my $dgrp_attr_buff;
my $dgrp_attr_buff_nk;
($dgroup_attrs, $errorString) = $SCST->deviceGroupAttributes($dgroup);
$dgrp_attr_buff = serializeKeyAttr("\t", $dgroup_attrs);
$dgrp_attr_buff_nk = serializeNkAttr("\t", $dgroup_attrs) if ($nonkey);
$dgrp_attr_buff .= "\n" if ($dgrp_attr_buff);
@@ -1901,11 +1926,11 @@ sub writeConfiguration {
foreach my $tgroup (sort keys %{$tgroups}) {
$tgroup_buff .= "\tTARGET_GROUP $tgroup";
my ($attributes, $errorString) = $SCST->targetGroupAttributes($dgroup, $tgroup);
my $attributes;
my $attribute_buff;
my $attribute_buff_nk;
($attributes, $errorString) = $SCST->targetGroupAttributes($dgroup, $tgroup);
$attribute_buff .= serializeKeyAttr("\t\t", $attributes);
$attribute_buff_nk .= serializeNkAttr("\t\t", $attributes) if ($nonkey);
$attribute_buff .= "\n" if ($attribute_buff);
@@ -1917,7 +1942,9 @@ sub writeConfiguration {
foreach my $tgt (@{$tgts}) {
$tgt_buff .= "\t\tTARGET $tgt";
my ($tgt_attrs, $errorString) = $SCST->targetGroupTargetAttributes($dgroup, $tgroup, $tgt);
my $tgt_attrs;
($tgt_attrs, $errorString) = $SCST->targetGroupTargetAttributes($dgroup, $tgroup, $tgt);
my $t_attribute_buff
= serializeKeyAttr("\t\t\t", $tgt_attrs);
@@ -2211,14 +2238,16 @@ sub applyConfigDevices {
my $config = shift;
my $deletions = shift;
my $changes = 0;
my $errorString;
my $handlers = $CURRENT{'handler'};
foreach my $handler (keys %{$handlers}) {
foreach my $device (@{$$handlers{$handler}}) {
if (!defined($$config{'HANDLER'}->{$handler}->{'DEVICE'}->{$device})) {
my ($attributes, $errorString) = $SCST->deviceAttributes($device);
my $attributes;
($attributes, $errorString) = $SCST->deviceAttributes($device);
if ($deletions) {
closeDevice($handler, $device, $deletions);
$changes++;
@@ -2244,13 +2273,15 @@ sub applyConfigDevices {
my $attributes = configToAttr(\%_attributes);
my $create_attrs = configToAttr(\%_attributes);
my ($possible, $errorString) = $SCST->deviceCreateAttributes($handler);
my $possible;
($possible, $errorString) = $SCST->deviceCreateAttributes($handler);
condExit($errorString);
filterCreateAttributes($possible, $create_attrs, FALSE);
filterCreateAttributes($possible, $attributes, TRUE);
if (handlerHasDevice($handler, $device)) {
my ($old_create_attrs, $errorString) = $SCST->deviceAttributes($device);
my $old_create_attrs;
($old_create_attrs, $errorString) = $SCST->deviceAttributes($device);
condExit($errorString);
filterCreateAttributes($possible, $old_create_attrs, FALSE);
@@ -2308,6 +2339,7 @@ sub applyConfigAssignments {
my $deletions = shift;
my $only_del = shift;
my $changes = 0;
my $errorString;
my $assignments = $CURRENT{'assign'};
@@ -2330,9 +2362,11 @@ sub applyConfigAssignments {
}
} else {
my $c_attrs = configToAttr($$config{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'LUN'}->{$lun}->{$device});
my ($o_attrs, $errorString) = $SCST->lunAttributes($driver, $target, $lun);
my $o_attrs;
($o_attrs, $errorString) = $SCST->lunAttributes($driver, $target, $lun);
condExit($errorString);
my ($possible, $errorString) = $SCST->lunCreateAttributes($driver, $target);
my $possible;
($possible, $errorString) = $SCST->lunCreateAttributes($driver, $target);
condExit($errorString);
filterCreateAttributes($possible, $c_attrs, FALSE);
@@ -2373,9 +2407,11 @@ sub applyConfigAssignments {
}
} else {
my $c_attrs = configToAttr($$config{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}->{'LUN'}->{$lun}->{$device});
my ($o_attrs, $errorString) = $SCST->lunAttributes($driver, $target, $lun, $group);
my $o_attrs;
($o_attrs, $errorString) = $SCST->lunAttributes($driver, $target, $lun, $group);
condExit($errorString);
my ($possible, $errorString) = $SCST->lunCreateAttributes($driver, $target, $group);
my $possible;
($possible, $errorString) = $SCST->lunCreateAttributes($driver, $target, $group);
condExit($errorString);
filterCreateAttributes($possible, $c_attrs, FALSE);
@@ -2445,6 +2481,7 @@ sub applyConfigEnableDrivers {
my $config = shift;
my $deletions = shift;
my $changes = 0;
my $errorString;
my $assignments = $$config{'TARGET_DRIVER'};
@@ -2457,7 +2494,8 @@ sub applyConfigEnableDrivers {
}
my $attributes = configToAttr(\%_attributes);
my ($d_attributes, $errorString) = $SCST->driverAttributes($driver);
my $d_attributes;
($d_attributes, $errorString) = $SCST->driverAttributes($driver);
if (defined($$d_attributes{'enabled'}) &&
($$d_attributes{'enabled'}->{'value'} != $$attributes{'enabled'})) {
@@ -2762,6 +2800,7 @@ sub applyConfigEnableTargets {
my $config = shift;
my $deletions = shift;
my $changes = 0;
my $errorString;
my $assignments = $$config{'TARGET_DRIVER'};
@@ -2778,7 +2817,8 @@ sub applyConfigEnableTargets {
}
my $attributes = configToAttr(\%_attributes);
my ($t_attributes, $errorString) = $SCST->targetAttributes($driver, $target);
my $t_attributes;
($t_attributes, $errorString) = $SCST->targetAttributes($driver, $target);
if (defined($$t_attributes{'enabled'}) &&
($$t_attributes{'enabled'}->{'value'} != $$attributes{'enabled'})) {
@@ -2898,6 +2938,7 @@ sub compareToKeyAttribute {
sub clearConfiguration {
my $dgroups = $CURRENT{'dgroups'};
my $assignments = $CURRENT{'assign'};
my $errorString;
print "-> Clearing running configuration.\n";
@@ -2937,7 +2978,9 @@ sub clearConfiguration {
foreach my $handler (sort keys %{$handlers}) {
foreach my $device (@{$$handlers{$handler}}) {
my ($attributes, $errorString) = $SCST->deviceAttributes($device);
my $attributes;
($attributes, $errorString) = $SCST->deviceAttributes($device);
closeDevice($handler, $device, TRUE);
}
}
@@ -2947,8 +2990,9 @@ sub clearConfiguration {
my ($drivers, $errorString) = $SCST->drivers();
foreach my $driver (@{$drivers}) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
disableTarget($driver, $target);
}
@@ -2970,8 +3014,9 @@ sub addVirtualTarget {
my ($targets, $errorString) = $SCST->targets($driver);
foreach my $_target (@{$targets}) {
my ($attributes, $errorString) = $SCST->targetAttributes($driver, $_target);
my $attributes;
($attributes, $errorString) = $SCST->targetAttributes($driver, $_target);
if (defined($$attributes{'hw_target'}) &&
!$$attributes{'enabled'}->{'value'}) {
enableTarget($driver, $_target);
@@ -3042,8 +3087,9 @@ sub listHandler {
$l_handler = length($handler) if ($l_handler < length($handler));
my ($devices, $errorString) = $SCST->devicesByHandler($handler);
my $devices;
($devices, $errorString) = $SCST->devicesByHandler($handler);
if ($#{$devices} == -1) {
push @{$devices}, '-';
}
@@ -3063,9 +3109,10 @@ sub listHandler {
print "\n";
foreach my $handler (sort keys %toprint) {
my ($devices, $errorString) = $SCST->devicesByHandler($handler);
my $devices;
my $first = TRUE;
($devices, $errorString) = $SCST->devicesByHandler($handler);
if ($#{$devices} == -1) {
push @{$devices}, '-';
}
@@ -3325,7 +3372,8 @@ sub listTargets {
$l_driver = length($driver) if ($l_driver < length($driver));
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
$l_target = length($target) if ($l_target < length($target));
@@ -3344,8 +3392,9 @@ sub listTargets {
my %p;
foreach my $driver (sort keys %toprint) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
if (!defined($p{$driver})) {
printf("\t%-*s %-*s\n", $l_driver, $driver, $l_target, $target);
@@ -3366,14 +3415,16 @@ sub listSessions {
my ($drivers, $errorString) = $SCST->drivers();
foreach my $driver (@{$drivers}) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
my $had_sessions = FALSE;
my $sessions;
print "Driver/Target: $driver/$target\n\n";
my ($sessions, $errorString) = $SCST->sessions($driver, $target);
($sessions, $errorString) = $SCST->sessions($driver, $target);
foreach my $session (keys %{$sessions}) {
print "\tSession: $session\n\n";
@@ -3499,7 +3550,9 @@ sub listGroups {
$driver = $_driver if (!$got_driver);
if ($driver eq $_driver) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $_target (@{$targets}) {
$target = $_target if (!$got_target);
@@ -3512,7 +3565,9 @@ sub listGroups {
print "\n";
my ($groups, $errorString) = $SCST->groups($driver, $target);
my $groups;
($groups, $errorString) = $SCST->groups($driver, $target);
foreach my $_group (@{$groups}) {
$group = $_group if (!$got_group);
@@ -3770,8 +3825,9 @@ sub listDriverAttributes {
}
}
my ($attributes, $errorString) = $SCST->targetCreateAttributes($driver);
my $attributes;
($attributes, $errorString) = $SCST->targetCreateAttributes($driver);
return TRUE if issueWarning($errorString);
return TRUE if (!scalar keys %{$attributes});
@@ -4827,11 +4883,14 @@ sub addTargetGroupTarget {
sub removeDeviceGroup {
my $group = shift;
my $force = shift;
my $errorString;
if (!$force) {
my ($devices, $errorString) = $SCST->deviceGroupDevices($group);
my ($tgroups, $errorString) = $SCST->targetGroups($group);
my $devices;
my $tgroups;
($devices, $errorString) = $SCST->deviceGroupDevices($group);
($tgroups, $errorString) = $SCST->targetGroups($group);
if (($#{$devices} > -1) || ($#{$tgroups} > -1)) {
print "\n";
listDeviceGroup($group);
@@ -4854,10 +4913,12 @@ sub removeTargetGroup {
my $group = shift;
my $tgroup = shift;
my $force = shift;
my $errorString;
if (!$force) {
my ($tgts, $errorString) = $SCST->targetGroupTargets($group, $tgroup);
my $tgts;
($tgts, $errorString) = $SCST->targetGroupTargets($group, $tgroup);
if ($#{$tgts} > -1) {
print "\n";
listTargetGroup($group, $tgroup);
@@ -4912,14 +4973,17 @@ sub removeDeviceGroupDevice {
my $group = shift;
my $device = shift;
my $force = shift;
my $errorString;
if (!$force) {
my $found = FALSE;
my ($tgroups, $errorString) = $SCST->targetGroups($group);
my $tgroups;
($tgroups, $errorString) = $SCST->targetGroups($group);
foreach my $tgroup (@{$tgroups}) {
my ($targets, $errorString) = $SCST->targetGroupTargets($group, $tgroup);
my $targets;
($targets, $errorString) = $SCST->targetGroupTargets($group, $tgroup);
if ($#{$targets} > -1) {
print "\n";
listTargetGroup($group, $tgroup);
@@ -4966,11 +5030,14 @@ sub removeGroup {
my $target = shift;
my $group = shift;
my $force = shift;
my $errorString;
if (!$force) {
my ($luns, $errorString) = $SCST->luns($driver, $target, $group);
my ($initiators, $errorString) = $SCST->initiators($driver, $target, $group);
my $luns;
my $initiators;
($luns, $errorString) = $SCST->luns($driver, $target, $group);
($initiators, $errorString) = $SCST->initiators($driver, $target, $group);
if ((keys %{$luns}) || ($#{$initiators} > -1)) {
listGroup($driver, $target, $group, $luns, $initiators);
immediateExit("Group is still in use, aborting. Use -force to override.");
@@ -5273,15 +5340,18 @@ sub issueLip {
my $driver = shift;
my $target = shift;
my $warn = shift;
my $errorString;
if (defined($driver) && defined($target)) {
return _issueLip($driver, $target, $warn);
} else {
my ($drivers, $errorString) = $SCST->drivers();
my $drivers;
($drivers, $errorString) = $SCST->drivers();
foreach my $driver(@{$drivers}) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
my $rc = _issueLip($driver, $target, $warn);
@@ -5560,8 +5630,9 @@ sub readOldConfigFile {
my($device, $lun) = split(/\,/, $device);
foreach my $driver (@{$drivers}) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'LUN'}->{$lun}->{$device} = {};
}
@@ -5573,8 +5644,9 @@ sub readOldConfigFile {
my $found_t = FALSE;
# Find the associated target
foreach my $driver (@{$drivers}) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
if ($target eq $group_t) {
foreach my $device (@{$config{'ASSIGNMENT'}->{$group}->{'DEVICE'}}) {
@@ -5625,8 +5697,9 @@ sub readOldConfigFile {
# Fill in with known targets, all disabled.
foreach my $driver (@{$drivers}) {
my ($targets, $errorString) = $SCST->targets($driver);
my $targets;
($targets, $errorString) = $SCST->targets($driver);
foreach my $target (@{$targets}) {
addAllGroupsToTarget(\%config, \%new, $driver, $target);
}
@@ -5644,8 +5717,9 @@ sub readOldConfigFile {
foreach my $driver (keys %{$new{'TARGET_DRIVER'}}) {
next if ($driver =~ /^qla/);
my ($attributes, $errorString) = $SCST->driverAttributes($driver);
my $attributes;
($attributes, $errorString) = $SCST->driverAttributes($driver);
if (defined($$attributes{'enabled'})) {
$new{'TARGET_DRIVER'}->{$driver}->{'enabled'}->{'1'} = {};
}