- Terminology fix pointed out my Bart Van Assche - rename initiator to target wrt target groups.

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@3769 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Mark Buechler
2011-07-26 18:22:12 +00:00
parent df0b08fd87
commit d590380e90
2 changed files with 182 additions and 182 deletions

View File

@@ -160,14 +160,14 @@ SCST_C_TGRP_BAD_ATTRIBUTES => 150,
SCST_C_TGRP_ATTRIBUTE_STATIC => 151,
SCST_C_TGRP_SETATTR_FAIL => 152,
SCST_C_TGRP_ADD_INI_FAIL => 160,
SCST_C_TGRP_REM_INI_FAIL => 161,
SCST_C_TGRP_NO_INI => 162,
SCST_C_TGRP_INI_EXISTS => 163,
SCST_C_TGRP_ADD_TGT_FAIL => 160,
SCST_C_TGRP_REM_TGT_FAIL => 161,
SCST_C_TGRP_NO_TGT => 162,
SCST_C_TGRP_TGT_EXISTS => 163,
SCST_C_TGRP_INI_BAD_ATTR => 170,
SCST_C_TGRP_INI_ATTR_STATIC => 171,
SCST_C_TGRP_INI_SETATTR_FAIL => 172,
SCST_C_TGRP_TGT_BAD_ATTR => 170,
SCST_C_TGRP_TGT_ATTR_STATIC => 171,
SCST_C_TGRP_TGT_SETATTR_FAIL => 172,
};
my %VERBOSE_ERROR = (
@@ -270,14 +270,14 @@ my %VERBOSE_ERROR = (
(SCST_C_TGRP_ATTRIBUTE_STATIC) => 'Target group attribute specified is static.',
(SCST_C_TGRP_SETATTR_FAIL) => 'Failed to set target group attribute. See "dmesg" for more information.',
(SCST_C_TGRP_ADD_INI_FAIL) => 'Failed to add initiator to target group.',
(SCST_C_TGRP_REM_INI_FAIL) => 'Failed to remove initiator from target group.',
(SCST_C_TGRP_NO_INI) => 'No such initiator exists within target group.',
(SCST_C_TGRP_INI_EXISTS) => 'Initiator already exists within target group.',
(SCST_C_TGRP_ADD_TGT_FAIL) => 'Failed to add target to target group.',
(SCST_C_TGRP_REM_TGT_FAIL) => 'Failed to remove target from target group.',
(SCST_C_TGRP_NO_TGT) => 'No such target exists within target group.',
(SCST_C_TGRP_TGT_EXISTS) => 'Target already exists within target group.',
(SCST_C_TGRP_INI_BAD_ATTR) => 'Bad attributes for target group initiator.',
(SCST_C_TGRP_INI_ATTR_STATIC) => 'Target group initiator attribute specified is static.',
(SCST_C_TGRP_INI_SETATTR_FAIL) => 'Failed to set target group initiator attribute. See "dmesg" for more information.',
(SCST_C_TGRP_TGT_BAD_ATTR) => 'Bad attributes for target group target.',
(SCST_C_TGRP_TGT_ATTR_STATIC) => 'Target group target attribute specified is static.',
(SCST_C_TGRP_TGT_SETATTR_FAIL) => 'Failed to set target group target attribute. See "dmesg" for more information.',
);
use vars qw(@ISA @EXPORT $VERSION);
@@ -800,40 +800,40 @@ sub targetGroups {
return \@tgroups;
}
sub targetGroupInitiators {
sub targetGroupTargets {
my $self = shift;
my $group = shift;
my $tgroup = shift;
my @initiators;
my @targets;
if ($self->deviceGroupExists($group) != TRUE) {
$self->{'err_string'} = "targetGroupInitiators(): Device group '$group' does not exist";
$self->{'err_string'} = "targetGroupTargets(): Device group '$group' does not exist";
return undef;
}
if ($self->targetGroupExists($group, $tgroup) != TRUE) {
$self->{'err_string'} = "targetGroupInitiators(): Target group '$tgroup' does not exist";
$self->{'err_string'} = "targetGroupTargets(): Target group '$tgroup' does not exist";
return undef;
}
my $dHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup);
if (!(opendir $dHandle, $_path)) {
$self->{'err_string'} = "targetGroups(): Unable to read directory '$_path': $!";
$self->{'err_string'} = "targetGroupTargets(): Unable to read directory '$_path': $!";
return undef;
}
foreach my $ini (readdir($dHandle)) {
next if (($ini eq '.') || ($ini eq '..'));
foreach my $tgt (readdir($dHandle)) {
next if (($tgt eq '.') || ($tgt eq '..'));
if (-d make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup, $ini)) {
push @initiators, $ini;
if (-d make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup, $tgt)) {
push @targets, $tgt;
}
}
close $dHandle;
return \@initiators;
return \@targets;
}
sub driverExists {
@@ -1734,11 +1734,11 @@ sub addTargetGroup {
return SCST_C_DGRP_ADD_GRP_FAIL;
}
sub addTargetGroupInitiator {
sub addTargetGroupTarget {
my $self = shift;
my $group = shift;
my $tgroup = shift;
my $ini = shift;
my $tgt = shift;
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
@@ -1748,8 +1748,8 @@ sub addTargetGroupInitiator {
return SCST_C_DGRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
$rc = $self->targetGroupInitiatorExists($group, $tgroup, $ini);
return SCST_C_TGRP_INI_EXISTS if ($rc == TRUE);
$rc = $self->targetGroupTargetExists($group, $tgroup, $tgt);
return SCST_C_TGRP_TGT_EXISTS if ($rc == TRUE);
return $rc if ($rc > 1);
my ($path, $cmd);
@@ -1759,11 +1759,11 @@ sub addTargetGroupInitiator {
$path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS,
$tgroup, SCST_MGMT_IO);
}
$cmd .= "add $ini";
$cmd .= "add $tgt";
my $io = new IO::File $path, O_WRONLY;
return SCST_C_TGRP_ADD_INI_FAIL if (!$io);
return SCST_C_TGRP_ADD_TGT_FAIL if (!$io);
my $bytes;
@@ -1776,7 +1776,7 @@ sub addTargetGroupInitiator {
close $io;
return FALSE if ($self->{'debug'} || $bytes);
return SCST_C_TGRP_ADD_INI_FAIL;
return SCST_C_TGRP_ADD_TGT_FAIL;
}
sub removeDeviceGroupDevice {
@@ -1861,11 +1861,11 @@ sub removeTargetGroup {
return SCST_C_DGRP_REM_GRP_FAIL;
}
sub removeTargetGroupInitiator {
sub removeTargetGroupTarget {
my $self = shift;
my $group = shift;
my $tgroup = shift;
my $ini = shift;
my $tgt = shift;
my $rc = $self->deviceGroupExists($group);
return SCST_C_DEV_GRP_NO_GROUP if (!$rc);
@@ -1875,8 +1875,8 @@ sub removeTargetGroupInitiator {
return SCST_C_DGRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
$rc = $self->targetGroupInitiatorExists($group, $tgroup, $ini);
return SCST_C_TGRP_NO_INI if (!$rc);
$rc = $self->targetGroupTargetExists($group, $tgroup, $tgt);
return SCST_C_TGRP_NO_TGT if (!$rc);
return $rc if ($rc > 1);
my ($path, $cmd);
@@ -1886,11 +1886,11 @@ sub removeTargetGroupInitiator {
$path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS,
$tgroup, SCST_MGMT_IO);
}
$cmd .= "del $ini";
$cmd .= "del $tgt";
my $io = new IO::File $path, O_WRONLY;
return SCST_C_TGRP_REM_INI_FAIL if (!$io);
return SCST_C_TGRP_REM_TGT_FAIL if (!$io);
my $bytes;
@@ -1903,7 +1903,7 @@ sub removeTargetGroupInitiator {
close $io;
return FALSE if ($self->{'debug'} || $bytes);
return SCST_C_TGRP_REM_INI_FAIL;
return SCST_C_TGRP_REM_TGT_FAIL;
}
sub addInitiator {
@@ -3550,32 +3550,32 @@ sub targetGroupAttributes {
return \%attributes;
}
sub targetGroupInitiatorAttributes {
sub targetGroupTargetAttributes {
my $self = shift;
my $group = shift;
my $tgroup = shift;
my $ini = shift;
my $tgt = shift;
my %attributes;
if ($self->deviceGroupExists($group) != TRUE) {
$self->{'err_string'} = "targetGroupInitiatorAttributes(): Device group '$group' does not exist";
$self->{'err_string'} = "targetGroupTargetAttributes(): Device group '$group' does not exist";
return undef;
}
if ($self->targetGroupExists($group, $tgroup) != TRUE) {
$self->{'err_string'} = "targetGroupInitiatorAttributes(): Target Group '$tgroup' does not exist";
$self->{'err_string'} = "targetGroupTargetAttributes(): Target Group '$tgroup' does not exist";
return undef;
}
if ($self->targetGroupInitiatorExists($group, $tgroup, $ini) != TRUE) {
$self->{'err_string'} = "targetGroupInitiatorAttributes(): Initiator '$ini' does not exist";
if ($self->targetGroupTargetExists($group, $tgroup, $tgt) != TRUE) {
$self->{'err_string'} = "targetGroupTargetAttributes(): Target '$tgt' does not exist";
return undef;
}
my $pHandle = new IO::Handle;
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup, $ini);
my $_path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup, $tgt);
if (!(opendir $pHandle, $_path)) {
$self->{'err_string'} = "targetGroupInitiatorAttributes(): Unable to read directory '$_path': $!";
$self->{'err_string'} = "targetGroupTargetAttributes(): Unable to read directory '$_path': $!";
return undef;
}
@@ -3583,7 +3583,7 @@ sub targetGroupInitiatorAttributes {
next if ($attribute eq '.' || $attribute eq '..' ||
$attribute eq SCST_MGMT_IO);
my $pPath = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS,
$tgroup, $ini, $attribute);
$tgroup, $tgt, $attribute);
my $mode = (stat($pPath))[2];
if (-d $pPath) {
# Skip directories
@@ -3602,8 +3602,8 @@ sub targetGroupInitiatorAttributes {
my $io = new IO::File $pPath, O_RDONLY;
if (!$io) {
$self->{'err_string'} = "targetGroupInitiatorAttributes(): Unable to read ".
"target group initiator attribute '$attribute': $!";
$self->{'err_string'} = "targetGroupTargetAttributes(): Unable to read ".
"target group target attribute '$attribute': $!";
return undef;
}
@@ -3717,11 +3717,11 @@ sub setTargetGroupAttribute {
return SCST_C_TGRP_SETATTR_FAIL;
}
sub setTargetGroupInitiatorAttribute {
sub setTargetGroupTargetAttribute {
my $self = shift;
my $group = shift;
my $tgroup = shift;
my $ini = shift;
my $tgt = shift;
my $attribute = shift;
my $value = shift;
@@ -3733,23 +3733,23 @@ sub setTargetGroupInitiatorAttribute {
return SCST_C_DGRP_NO_GROUP if (!$rc);
return $rc if ($rc > 1);
$rc = $self->targetGroupInitiatorExists($group, $tgroup, $ini);
return SCST_C_TGRP_NO_INI if (!$rc);
$rc = $self->targetGroupTargetExists($group, $tgroup, $tgt);
return SCST_C_TGRP_NO_TGT if (!$rc);
return $rc if ($rc > 1);
return TRUE if (!defined($attribute) || !defined($value));
my $attributes = $self->targetGroupInitiatorAttributes($group, $tgroup, $ini);
my $attributes = $self->targetGroupTargetAttributes($group, $tgroup, $tgt);
return SCST_C_TGRP_INI_BAD_ATTR if (!defined($$attributes{$attribute}));
return SCST_C_TGRP_INI_ATTR_STATIC if ($$attributes{$attribute}->{'static'});
return SCST_C_TGRP_TGT_BAD_ATTR if (!defined($$attributes{$attribute}));
return SCST_C_TGRP_TGT_ATTR_STATIC if ($$attributes{$attribute}->{'static'});
my $path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS,
$tgroup, $ini, $attribute);
$tgroup, $tgt, $attribute);
my $io = new IO::File $path, O_WRONLY;
return SCST_C_TGRP_INI_SETATTR_FAIL if (!$io);
return SCST_C_TGRP_TGT_SETATTR_FAIL if (!$io);
my $bytes;
@@ -3762,7 +3762,7 @@ sub setTargetGroupInitiatorAttribute {
close $io;
return FALSE if ($self->{'debug'} || $bytes);
return SCST_C_TGRP_INI_SETATTR_FAIL;
return SCST_C_TGRP_TGT_SETATTR_FAIL;
}
sub handlers {
@@ -4384,28 +4384,28 @@ sub targetGroupExists {
return FALSE;
}
sub targetGroupInitiatorExists {
sub targetGroupTargetExists {
my $self = shift;
my $group = shift;
my $tgroup = shift;
my $ini = shift;
my $tgt = shift;
if ($self->deviceGroupExists($group) != TRUE) {
$self->{'err_string'} = "targetGroupInitiatorExists(): Device group '$group' does not exist";
$self->{'err_string'} = "targetGroupTargetExists(): Device group '$group' does not exist";
return undef;
}
if ($self->targetGroupExists($group, $tgroup) != TRUE) {
$self->{'err_string'} = "targetGroupInitiatorExists(): Target group '$tgroup' does not exist";
$self->{'err_string'} = "targetGroupTargetExists(): Target group '$tgroup' does not exist";
return undef;
}
my $initiators = $self->targetGroupInitiators($group, $tgroup);
my $targets = $self->targetGroupTargets($group, $tgroup);
return SCST_C_FATAL_ERROR if (!defined($initiators));
return SCST_C_FATAL_ERROR if (!defined($targets));
foreach my $_ini (@{$initiators}) {
return TRUE if ($ini eq $_ini);
foreach my $_tgt (@{$targets}) {
return TRUE if ($tgt eq $_tgt);
}
return FALSE;

View File

@@ -44,7 +44,7 @@ List Attribute Operations
-list_dgrp_attr <dgrp> : List all attributes for a given device group.
-list_tgrp_attr <tgrp> : List all attributes for a device group/target.
-dev_group <dgrp>
-list_tinit_attr <init> : List all attributes for a target group initiator.
-list_ttgt_attr <tgt> : List all attributes for a target group target.
-dev_group <dgrp>
-tgt_group <tgrp>
-list_tgt_attr <target> : List all attributes for a given driver/target.
@@ -77,7 +77,7 @@ Set Attribute Operations
-set_tgrp_attr <tgrp> : List all attributes for a device group/target.
-dev_group <dgrp>
-attributes <p=v,...>
-set_tinit_attr <init> : List all attributes for a target group initiator.
-set_ttgt_attr <tgt> : List all attributes for a target group target.
-dev_group <dgrp>
-tgt_group <tgrp>
-attributes <p=v,...>
@@ -132,12 +132,12 @@ Device Group Operations
-tgt_group <tgrp> : Add target group <tgrp> to device group <dgrp>.
-rem_tgrp <tgrp>
-dev_group <dgrp> : Remove target group <tgrp> from device group.
-add_tgrp_init <init>
-add_tgrp_init <init> : Add target to specified target group.
-dev_group <dgrp>
-tgt_group <tgrp> : Add initiator to specified target group.
-rem_tgrp_init <init>
-tgt_group <tgrp>
-rem_tgrp_tgt <tgt> : Remove target from specified target group.
-dev_group <dgrp>
-tgt_group <tgrp> : Remove initiator from specified target group.
-tgt_group <tgrp>
Target Operations
-add_target <target> : Add a dynamic target to a capable driver.
@@ -286,7 +286,7 @@ sub getArgs {
my $listDeviceAttr;
my $listDeviceGroupAttr;
my $listTargetGroupAttr;
my $listTargetGroupInitAttr;
my $listTargetGroupTargetAttr;
my $listGroupAttr;
my $listDriverAttr;
my $listTargetAttr;
@@ -298,7 +298,7 @@ sub getArgs {
my $setDeviceAttr;
my $setDeviceGroupAttr;
my $setTargetGroupAttr;
my $setTargetGroupInitAttr;
my $setTargetGroupTargetAttr;
my $setDriverAttr;
my $setTargetAttr;
my $setGroupAttr;
@@ -321,8 +321,8 @@ sub getArgs {
my $addTargetGroup;
my $removeTargetGroup;
my $addTargetGroupInit;
my $removeTargetGroupInit;
my $addTargetGroupTarget;
my $removeTargetGroupTarget;
my $addTarget;
my $removeTarget;
@@ -380,7 +380,7 @@ sub getArgs {
'list_dev_attr=s' => \$listDeviceAttr,
'list_dgrp_attr=s' => \$listDeviceGroupAttr,
'list_tgrp_attr=s' => \$listTargetGroupAttr,
'list_tinit_attr=s' => \$listTargetGroupInitAttr,
'list_ttgt_attr=s' => \$listTargetGroupTargetAttr,
'list_drv_attr=s' => \$listDriverAttr,
'list_tgt_attr=s' => \$listTargetAttr,
'list_grp_attr=s' => \$listGroupAttr,
@@ -392,7 +392,7 @@ sub getArgs {
'set_dev_attr=s' => \$setDeviceAttr,
'set_dgrp_attr=s' => \$setDeviceGroupAttr,
'set_tgrp_attr=s' => \$setTargetGroupAttr,
'set_tinit_attr=s' => \$setTargetGroupInitAttr,
'set_ttgt_attr=s' => \$setTargetGroupTargetAttr,
'set_drv_attr=s' => \$setDriverAttr,
'set_tgt_attr=s' => \$setTargetAttr,
'set_grp_attr=s' => \$setGroupAttr,
@@ -415,8 +415,8 @@ sub getArgs {
'add_tgrp=s' => \$addTargetGroup,
'rem_tgrp=s' => \$removeTargetGroup,
'add_tgrp_init=s' => \$addTargetGroupInit,
'rem_tgrp_init=s' => \$removeTargetGroupInit,
'add_tgrp_tgt=s' => \$addTargetGroupTarget,
'rem_tgrp_tgt=s' => \$removeTargetGroupTarget,
'add_target=s' => \$addTarget,
'rem_target=s' => \$removeTarget,
@@ -475,17 +475,17 @@ sub getArgs {
defined($listDriver) || defined($listTarget) || defined($listGroup) || defined($listSessions) ||
defined($listScstAttr) || defined($listHandlerAttr) || defined($listDeviceAttr) || defined($listDriverAttr) ||
defined($listTargetAttr) || defined($listGroupAttr) || defined($listLunAttr) || defined($listInitiatorAttr) ||
defined($listDeviceGroupAttr) || defined($listTargetGroupAttr) || defined($listTargetGroupInitAttr);
defined($listDeviceGroupAttr) || defined($listTargetGroupAttr) || defined($listTargetGroupTargetAttr);
my $set_mode = defined($setScstAttr) + defined($setHandlerAttr) + defined($setDeviceAttr) +
defined($setDriverAttr) + defined($setTargetAttr) + defined($setGroupAttr) +
defined($setLunAttr) + defined($setInitiatorAttr) + defined($setDeviceGroupAttr) +
defined($setTargetGroupAttr) + defined($setTargetGroupInitAttr);
defined($setTargetGroupAttr) + defined($setTargetGroupTargetAttr);
my $op_mode = defined($clearConfig) + defined($writeConfig) + defined($checkConfig) +
defined($openDev) + defined($closeDev) + defined($addDevGroup) + defined($removeDevGroup) +
defined($addTargetGroup) + defined($removeTargetGroup) +
defined($addTargetGroupInit) + defined($removeTargetGroupInit) +
defined($addTargetGroupTarget) + defined($removeTargetGroupTarget) +
defined($addGroup) + defined($removeGroup) + defined($addDevGroupDevice) + defined($removeDevGroupDevice) +
defined($addInitiator) + defined($removeInitiator) + defined($clearInitiators) +
defined($addDriverAttr) + defined($addTargetAttr) + defined($remDriverAttr) + defined($remTargetAttr) +
@@ -533,8 +533,8 @@ sub getArgs {
exit 1;
}
if (defined($listTargetGroupInitAttr) && (($deviceGroup eq '') || ($targetGroup eq ''))) {
print "Please specify -dev_group and -tgt_group with -list_tinit_attr.\n";
if (defined($listTargetGroupTargetAttr) && (($deviceGroup eq '') || ($targetGroup eq ''))) {
print "Please specify -dev_group and -tgt_group with -list_ttgt_attr.\n";
exit 1;
}
@@ -563,8 +563,8 @@ sub getArgs {
exit 1;
}
if (defined($setTargetGroupInitAttr) && (($deviceGroup eq '') || ($targetGroup eq '') || ($attributes eq ''))) {
print "Please specify -dev_group -tgt_group and -attributes with -set_tinit_attr.\n";
if (defined($setTargetGroupTargetAttr) && (($deviceGroup eq '') || ($targetGroup eq '') || ($attributes eq ''))) {
print "Please specify -dev_group -tgt_group and -attributes with -set_ttgt_attr.\n";
exit 1;
}
@@ -672,7 +672,7 @@ sub getArgs {
exit 1;
}
if ((defined($addTargetGroupInit) || defined($removeTargetGroupInit)) &&
if ((defined($addTargetGroupTarget) || defined($removeTargetGroupTarget)) &&
(($deviceGroup eq '') || ($targetGroup eq ''))) {
print "Please specify -dev_group and -tgt_group with -add_tgrp_init/-rem_tgrp_init.\n";
exit 1;
@@ -699,14 +699,14 @@ sub getArgs {
return ($applyConfig, $clearConfig, $writeConfig, $checkConfig,
$listScstAttr, $listHandler, $listDevice, $listDeviceGroup, $listTargetGroup, $listDriver, $listTarget, $listGroup,
$listSessions, $listHandlerAttr, $listDeviceAttr, $listDriverAttr, $listTargetAttr,
$listDeviceGroupAttr, $listTargetGroupAttr, $listTargetGroupInitAttr,
$listDeviceGroupAttr, $listTargetGroupAttr, $listTargetGroupTargetAttr,
$listGroupAttr, $listLunAttr, $listInitiatorAttr, $setScstAttr, $setHandlerAttr,
$setDeviceAttr, $setDriverAttr, $setTargetAttr, $setGroupAttr, $setLunAttr, $setInitiatorAttr,
$setDeviceGroupAttr, $setTargetGroupAttr, $setTargetGroupInitAttr,
$setDeviceGroupAttr, $setTargetGroupAttr, $setTargetGroupTargetAttr,
$addDriverAttr, $addTargetAttr, $remDriverAttr, $remTargetAttr,
$openDev, $closeDev, $resyncDev,
$addDevGroup, $removeDevGroup, $addDevGroupDevice, $removeDevGroupDevice,
$addTargetGroup, $removeTargetGroup, $addTargetGroupInit, $removeTargetGroupInit,
$addTargetGroup, $removeTargetGroup, $addTargetGroupTarget, $removeTargetGroupTarget,
$addTarget, $removeTarget,
$addGroup, $removeGroup,
$addInitiator, $removeInitiator, $moveInitiator, $clearInitiators,
@@ -728,14 +728,14 @@ sub main {
my ($applyConfig, $clearConfig, $writeConfig, $checkConfig,
$listScstAttr, $listHandler, $listDevice, $listDeviceGroup, $listTargetGroup, $listDriver, $listTarget, $listGroup,
$listSessions, $listHandlerAttr, $listDeviceAttr, $listDriverAttr, $listTargetAttr,
$listDeviceGroupAttr, $listTargetGroupAttr, $listTargetGroupInitAttr,
$listDeviceGroupAttr, $listTargetGroupAttr, $listTargetGroupTargetAttr,
$listGroupAttr, $listLunAttr, $listInitiatorAttr, $setScstAttr, $setHandlerAttr,
$setDeviceAttr, $setDriverAttr, $setTargetAttr, $setGroupAttr, $setLunAttr, $setInitiatorAttr,
$setDeviceGroupAttr, $setTargetGroupAttr, $setTargetGroupInitAttr,
$setDeviceGroupAttr, $setTargetGroupAttr, $setTargetGroupTargetAttr,
$addDriverAttr, $addTargetAttr, $remDriverAttr, $remTargetAttr,
$openDev, $closeDev, $resyncDev,
$addDevGroup, $removeDevGroup, $addDevGroupDevice, $removeDevGroupDevice,
$addTargetGroup, $removeTargetGroup, $addTargetGroupInit, $removeTargetGroupInit,
$addTargetGroup, $removeTargetGroup, $addTargetGroupTarget, $removeTargetGroupTarget,
$addTarget, $removeTarget,
$addGroup, $removeGroup,
$addInitiator, $removeInitiator, $moveInitiator, $clearInitiators,
@@ -850,8 +850,8 @@ sub main {
$rc = listTargetGroupAttributes($deviceGroup, $listTargetGroupAttr, $nonkey);
$all_good = TRUE;
};
defined($listTargetGroupInitAttr) && do {
$rc = listTargetGroupInitiatorAttributes($deviceGroup, $targetGroup, $listTargetGroupInitAttr, $nonkey);
defined($listTargetGroupTargetAttr) && do {
$rc = listTargetGroupTargetAttributes($deviceGroup, $targetGroup, $listTargetGroupTargetAttr, $nonkey);
$all_good = TRUE;
};
defined($setScstAttr) && do {
@@ -924,10 +924,10 @@ sub main {
print "\t-> Done, $changes change(s) made.\n";
last SWITCH;
};
defined($setTargetGroupInitAttr) && do {
defined($setTargetGroupTargetAttr) && do {
last if (prompt());
print "\n-> Making requested changes.\n";
my $changes = setTargetGroupInitiatorAttributes($deviceGroup, $targetGroup, $setTargetGroupInitAttr, $attributes, TRUE);
my $changes = setTargetGroupTargetAttributes($deviceGroup, $targetGroup, $setTargetGroupTargetAttr, $attributes, TRUE);
print "\t-> Done, $changes change(s) made.\n";
last SWITCH;
};
@@ -1018,15 +1018,15 @@ sub main {
print "\t-> Done.\n";
last SWITCH;
};
defined($addTargetGroupInit) && do {
defined($addTargetGroupTarget) && do {
print "\n-> Making requested changes.\n";
$rc = addTargetGroupInitiator($deviceGroup, $targetGroup, $addTargetGroupInit);
$rc = addTargetGroupTarget($deviceGroup, $targetGroup, $addTargetGroupTarget);
print "\t-> Done.\n";
last SWITCH;
};
defined($removeTargetGroupInit) && do {
defined($removeTargetGroupTarget) && do {
print "\n-> Making requested changes.\n";
$rc = removeTargetGroupInitiator($deviceGroup, $targetGroup, $removeTargetGroupInit, $force);
$rc = removeTargetGroupTarget($deviceGroup, $targetGroup, $removeTargetGroupTarget, $force);
print "\t-> Done.\n";
last SWITCH;
};
@@ -1211,8 +1211,8 @@ sub readWorkingConfig {
my $tgroups = $SCST->targetGroups($dgroup);
immediateExit($SCST->errorString());
foreach my $tgroup (@{$tgroups}) {
$CURRENT{'dgroups'}->{$dgroup}->{'tgroups'}->{$tgroup}->{'inits'} =
$SCST->targetGroupInitiators($dgroup, $tgroup);
$CURRENT{'dgroups'}->{$dgroup}->{'tgroups'}->{$tgroup}->{'targets'} =
$SCST->targetGroupTargets($dgroup, $tgroup);
}
}
@@ -1668,30 +1668,30 @@ sub writeConfiguration {
$attribute_buff .= "\n" if ($attribute_buff);
$attribute_buff_nk .= "\n" if ($attribute_buff_nk);
my $inits = $CURRENT{'dgroups'}->{$dgroup}->{'tgroups'}->{$tgroup}->{'inits'};
my $tgts = $CURRENT{'dgroups'}->{$dgroup}->{'tgroups'}->{$tgroup}->{'targets'};
my $init_buff;
foreach my $init (@{$inits}) {
$init_buff .= "\t\tINITIATOR $init";
my $tgt_buff;
foreach my $tgt (@{$tgts}) {
$tgt_buff .= "\t\tTARGET $tgt";
my $ini_attrs = $SCST->targetGroupInitiatorAttributes($dgroup, $tgroup, $init);
my $tgt_attrs = $SCST->targetGroupTargetAttributes($dgroup, $tgroup, $tgt);
my $i_attribute_buff
= serializeKeyAttr("\t\t\t", $ini_attrs);
my $i_attribute_buff_nk
= serializeNkAttr("\t\t\t", $ini_attrs) if ($nonkey);
my $t_attribute_buff
= serializeKeyAttr("\t\t\t", $tgt_attrs);
my $t_attribute_buff_nk
= serializeNkAttr("\t\t\t", $tgt_attrs) if ($nonkey);
if ($i_attribute_buff_nk) {
$i_attribute_buff .= "\t\t\t# Non-key attributes\n";
$i_attribute_buff .= $i_attribute_buff_nk;
if ($t_attribute_buff_nk) {
$t_attribute_buff .= "\t\t\t# Non-key attributes\n";
$t_attribute_buff .= $t_attribute_buff_nk;
}
if ($i_attribute_buff) {
$init_buff .= " {\n";
$init_buff .= $i_attribute_buff;
$init_buff .= "\t\t}\n";
if ($t_attribute_buff) {
$tgt_buff .= " {\n";
$tgt_buff .= $t_attribute_buff;
$tgt_buff .= "\t\t}\n";
} else {
$init_buff .= "\n";
$tgt_buff .= "\n";
}
}
@@ -1700,11 +1700,11 @@ sub writeConfiguration {
$attribute_buff .= $attribute_buff_nk;
}
if ($attribute_buff || $init_buff) {
if ($attribute_buff || $tgt_buff) {
$tgroup_buff .= " {\n";
$tgroup_buff .= $attribute_buff;
$tgroup_buff .= $init_buff;
$tgroup_buff .= $tgt_buff;
$tgroup_buff =~ s/\n\n$/\n/;
$tgroup_buff .= "\t}\n\n";
@@ -2243,15 +2243,15 @@ sub applyConfigDeviceGroups {
print "\t-> Target Group '$dgroup/$tgroup' is not in configuration. Use -force to remove.\n";
}
} else {
my $inits = $$dgroups{$dgroup}->{'tgroups'}->{$tgroup}->{'inits'};
my $tgts = $$dgroups{$dgroup}->{'tgroups'}->{$tgroup}->{'targets'};
foreach my $init (@{$inits}) {
if (!defined($$config{'DEVICE_GROUP'}->{$dgroup}->{'TARGET_GROUP'}->{$tgroup}->{'INITIATOR'}->{$init})) {
foreach my $tgt (@{$tgts}) {
if (!defined($$config{'DEVICE_GROUP'}->{$dgroup}->{'TARGET_GROUP'}->{$tgroup}->{'TARGET'}->{$tgt})) {
if ($deletions) {
removeTargetGroupInitiator($dgroup, $tgroup, $init);
removeTargetGroupTarget($dgroup, $tgroup, $tgt);
$changes++;
} else {
print "\t-> Initiator '$dgroup/$tgroup/$init' is not in configuration. Use -force to remove.\n";
print "\t-> Target '$dgroup/$tgroup/$tgt' is not in configuration. Use -force to remove.\n";
}
}
}
@@ -2285,29 +2285,29 @@ sub applyConfigDeviceGroups {
$changes++;
}
my $inits = $$tgroups{$tgroup}->{'INITIATOR'};
my $tgts = $$tgroups{$tgroup}->{'TARGET'};
foreach my $init (keys %{$inits}) {
if (!groupHasInitiator($CURRENT{'dgroups'}->{$dgroup}->{'tgroups'}->{$tgroup}->{'inits'}, $init)) {
addTargetGroupInitiator($dgroup, $tgroup, $init);
foreach my $tgt (keys %{$tgts}) {
if (!arrayHasValue($CURRENT{'dgroups'}->{$dgroup}->{'tgroups'}->{$tgroup}->{'targets'}, $tgt)) {
addTargetGroupTarget($dgroup, $tgroup, $tgt);
$changes++;
}
my %_attributes;
foreach my $item (keys %{$$inits{$init}}) {
$_attributes{$item} = $$inits{$init}->{$item};
foreach my $item (keys %{$$tgts{$tgt}}) {
$_attributes{$item} = $$tgts{$tgt}->{$item};
}
my $attributes = configToAttr(\%_attributes);
if (scalar keys %{$attributes}) {
$changes += setTargetGroupInitiatorAttributes($dgroup, $tgroup, $init, $attributes);
$changes += setTargetGroupTargetAttributes($dgroup, $tgroup, $tgt, $attributes);
}
}
my %_attributes;
foreach my $item (keys %{$$tgroups{$tgroup}}) {
next if ($item eq 'INITIATOR');
next if ($item eq 'TARGET');
$_attributes{$item} = $$tgroups{$tgroup}->{$item};
}
@@ -2924,24 +2924,24 @@ sub listTargetGroup {
my $group = shift;
my $tgroup = shift;
my $initiators = $SCST->targetGroupInitiators($group, $tgroup);
my $targets = $SCST->targetGroupTargets($group, $tgroup);
my $l_ini;
foreach my $ini (@{$initiators}) {
$l_ini = length($ini) if ($l_ini < length($ini));
my $l_tgt;
foreach my $tgt (@{$targets}) {
$l_tgt = length($tgt) if ($l_tgt < length($tgt));
}
$l_ini = 10 if ($l_ini < 10);
$l_tgt = 7 if ($l_tgt < 7);
print "\tInitiators\n";
print "\tTargets\n";
print "\t";
for (my $x = 0; $x < $l_ini; $x++) {
for (my $x = 0; $x < $l_tgt; $x++) {
print "-";
}
print "\n";
foreach my $ini (@{$initiators}) {
print "\t$ini\n";
foreach my $tgt (@{$targets}) {
print "\t$tgt\n";
}
return FALSE;
@@ -3671,36 +3671,36 @@ sub listTargetGroupAttributes {
return listAttributes($attributes, $nonkey);
}
sub listTargetGroupInitiatorAttributes {
sub listTargetGroupTargetAttributes {
my $group = shift;
my $tgroup = shift;
my $init = shift;
my $tgt = shift;
my $nonkey = shift;
my $attributes = $SCST->targetGroupInitiatorAttributes($group, $tgroup, $init);
my $attributes = $SCST->targetGroupTargetAttributes($group, $tgroup, $tgt);
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such device group/target/initiator group '$group/$tgroup/$init' found.\n";
print "No such device group/target group/target '$group/$tgroup/$tgt' found.\n";
return;
}
return listAttributes($attributes, $nonkey);
}
sub listTargetGroupInitiatorAttributes {
sub listTargetGroupTargetAttributes {
my $group = shift;
my $tgroup = shift;
my $ini = shift;
my $tgt = shift;
my $nonkey = shift;
my $attributes = $SCST->targetGroupInitiatorAttributes($group, $tgroup, $ini);
my $attributes = $SCST->targetGroupTargetAttributes($group, $tgroup, $tgt);
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such initiator '$ini' exists within specified target group.\n";
print "No such target '$tgt' exists within specified target group.\n";
return;
}
@@ -3985,35 +3985,35 @@ sub setTargetGroupAttribute {
return $rc;
}
sub setTargetGroupInitiatorAttributes {
sub setTargetGroupTargetAttributes {
my $group = shift;
my $tgroup = shift;
my $init = shift;
my $tgt = shift;
my $attributes = shift;
my $showset = shift;
my $error = "\t-> WARNING: Initiator '$group/$tgroup/$init' lacks the settable attribute '%s', ignoring.\n\n";
my $error = "\t-> WARNING: Target '$group/$tgroup/$tgt' lacks the settable attribute '%s', ignoring.\n\n";
my $_attributes = $SCST->targetGroupInitiatorAttributes($group, $tgroup, $init);
my $_attributes = $SCST->targetGroupTargetAttributes($group, $tgroup, $tgt);
return TRUE if issueWarning($SCST->errorString());
return setAttributes(undef, $group, $tgroup, $init, $attributes,
$_attributes, $error, \&setTargetGroupInitiatorAttribute, $showset);
return setAttributes(undef, $group, $tgroup, $tgt, $attributes,
$_attributes, $error, \&setTargetGroupTargetAttribute, $showset);
}
sub setTargetGroupInitiatorAttribute {
sub setTargetGroupTargetAttribute {
shift;
my $group = shift;
my $tgroup = shift;
my $init = shift;
my $tgt = shift;
my $attribute = shift;
my $value = shift;
print "\t-> Setting Initiator attribute '$attribute' to value '$value' for ".
"initiator '$group/$tgroup/$init': ";
print "\t-> Setting target attribute '$attribute' to value '$value' for ".
"target '$group/$tgroup/$tgt': ";
my $rc = $SCST->setTargetGroupInitiatorAttribute($group, $tgroup, $init, $attribute, $value);
my $rc = $SCST->setTargetGroupTargetAttribute($group, $tgroup, $tgt, $attribute, $value);
print "done.\n";
return $rc;
@@ -4508,14 +4508,14 @@ sub addTargetGroup {
return FALSE;
}
sub addTargetGroupInitiator {
sub addTargetGroupTarget {
my $group = shift;
my $tgroup = shift;
my $init = shift;
my $tgt = shift;
print "\t-> Adding new target group/initiator '$tgroup/$init' to device group '$group': ";
print "\t-> Adding new target group/target '$tgroup/$tgt' to device group '$group': ";
my $rc = $SCST->addTargetGroupInitiator($group, $tgroup, $init);
my $rc = $SCST->addTargetGroupTarget($group, $tgroup, $tgt);
print "done.\n";
@@ -4556,9 +4556,9 @@ sub removeTargetGroup {
my $force = shift;
if (!$force) {
my $inits = $SCST->targetGroupInitiators($group, $tgroup);
my $tgts = $SCST->targetGroupTargets($group, $tgroup);
if ($#{$inits} > -1) {
if ($#{$tgts} > -1) {
print "\n";
listTargetGroup($group, $tgroup);
immediateExit("Target group is still in use, aborting. Use -force to override.");
@@ -4576,15 +4576,15 @@ sub removeTargetGroup {
return FALSE;
}
sub removeTargetGroupInitiator {
sub removeTargetGroupTarget {
my $group = shift;
my $tgroup = shift;
my $init = shift;
my $tgt = shift;
my $force = shift;
print "\t-> Removing target group/initiator '$tgroup/$init' from device group '$group': ";
print "\t-> Removing target group/target '$tgroup/$tgt' from device group '$group': ";
my $rc = $SCST->removeTargetGroupInitiator($group, $tgroup, $init);
my $rc = $SCST->removeTargetGroupTarget($group, $tgroup, $tgt);
print "done.\n";
@@ -4618,9 +4618,9 @@ sub removeDeviceGroupDevice {
my $tgroups = $SCST->targetGroups($group);
foreach my $tgroup (@{$tgroups}) {
my $initiators = $SCST->targetGroupInitiators($group, $tgroup);
my $targets = $SCST->targetGroupTargets($group, $tgroup);
if ($#{$initiators} > -1) {
if ($#{$targets} > -1) {
print "\n";
listTargetGroup($group, $tgroup);
$found = TRUE;
@@ -5433,12 +5433,12 @@ sub deviceGroupHasDevice {
return FALSE;
}
sub groupHasInitiator {
my $initiators = shift;
my $initiator = shift;
sub arrayHasValue {
my $array = shift;
my $value = shift;
foreach my $_initiator (@{$initiators}) {
return TRUE if ($_initiator eq $initiator);
foreach my $item (@{$array}) {
return TRUE if ($item eq $value);
}
return FALSE;