- Hopefully fix all remaining exit code issues.

- Better fix for empty groups - don't write empty braces.



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2968 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Mark Buechler
2010-12-07 17:40:16 +00:00
parent 3fb6b9e6e7
commit 42e623f994

View File

@@ -1405,8 +1405,9 @@ sub writeConfiguration {
}
}
$group_buff .= " {\n";
if ($lun_buff || $init_buff) {
$group_buff .= " {\n";
if ($lun_buff) {
$group_buff .= $lun_buff;
}
@@ -1456,7 +1457,8 @@ sub writeConfiguration {
$group_buff .= $g_attribute_buff;
}
if ($group_buff) {
if ($group_buff && ($lun_buff || $init_buff ||
$g_attribute_buff || $g_attribute_buff_nk)) {
$group_buff .= "\t\t}\n\n";
$group_buff =~ s/\n+$/\n/;
}
@@ -1694,7 +1696,7 @@ sub applyConfiguration {
print "\t-> Done, $changes change(s) made.\n";
return 0;
return FALSE;
}
sub applyConfigDevices {
@@ -1901,7 +1903,7 @@ sub applyConfigAssignments {
}
}
return if ($only_del);
return $changes if ($only_del);
$assignments = $$config{'TARGET_DRIVER'};
@@ -2254,6 +2256,8 @@ sub clearConfiguration {
}
print "\t-> Configuration cleared.\n";
return FALSE;
}
sub addVirtualTarget {
@@ -2303,6 +2307,8 @@ sub listHandlers {
foreach my $handler (@{$handlers}) {
print "\t$handler\n";
}
return FALSE;
}
sub listHandler {
@@ -2363,6 +2369,8 @@ sub listHandler {
} else {
print "No such handler '$handler' found.\n";
}
return FALSE;
}
sub listDevices {
@@ -2379,7 +2387,7 @@ sub listDevice {
my $attributes = $SCST->deviceAttributes($device);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such device '$device' exists.\n";
@@ -2411,6 +2419,8 @@ sub listDrivers {
foreach my $driver (@{$drivers}) {
print "\t$driver\n";
}
return FALSE;
}
sub listTargets {
@@ -2468,6 +2478,8 @@ sub listTargets {
} else {
print "No such driver '$driver' exists.\n";
}
return FALSE;
}
sub listSessions {
@@ -2509,6 +2521,8 @@ sub listSessions {
}
}
}
return FALSE;
}
sub listGroup {
@@ -2522,7 +2536,7 @@ sub listGroup {
$initiators = $SCST->initiators($driver, $target, $group)
if (($initiators eq '') && ($group ne ''));
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if ((keys %{$luns}) || ($#{$initiators} > -1)) {
my $l_device;
@@ -2581,6 +2595,7 @@ sub listGroup {
}
}
return FALSE;
}
sub listGroups {
@@ -2642,6 +2657,8 @@ sub listGroups {
print "Target '$target' not found.\n";
}
}
return FALSE;
}
sub listExported {
@@ -2650,7 +2667,7 @@ sub listExported {
$attributes = $SCST->deviceAttributes($device) if (!$attributes);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (keys %{$$attributes{'exported'}}) {
my $exported = $$attributes{'exported'}->{'value'};
@@ -2695,6 +2712,8 @@ sub listExported {
} else {
print "Device '$device' is not currently in use by any group.\n";
}
return FALSE;
}
sub listAttributes {
@@ -2809,6 +2828,8 @@ sub listAttributes {
print "\n";
}
return FALSE;
}
sub listScstAttributes {
@@ -2816,7 +2837,7 @@ sub listScstAttributes {
my $attributes = $SCST->scstAttributes();
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "FATAL: Unable to get a list of SCST attributes! Please make sure SCST is loaded.\n";
@@ -2832,7 +2853,7 @@ sub listHandlerAttributes {
my $attributes = $SCST->handlerAttributes($handler);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such handler '$handler' found.\n";
@@ -2844,8 +2865,8 @@ sub listHandlerAttributes {
$attributes = $SCST->deviceCreateAttributes($handler);
return if issueWarning($SCST->errorString());
return if (!scalar keys %{$attributes});
return TRUE if issueWarning($SCST->errorString());
return TRUE if (!scalar keys %{$attributes});
print "\n\tDevice CREATE attributes available\n";
print "\t----------------------------------\n";
@@ -2853,6 +2874,8 @@ sub listHandlerAttributes {
foreach my $attribute (keys %{$attributes}) {
print "\t$attribute\n";
}
return FALSE;
}
sub listDriverAttributes {
@@ -2861,7 +2884,7 @@ sub listDriverAttributes {
my $attributes = $SCST->driverAttributes($driver);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such driver '$driver' found.\n";
@@ -2873,7 +2896,7 @@ sub listDriverAttributes {
if ($SCST->driverIsVirtualCapable($driver)) {
$attributes = $SCST->driverDynamicAttributes($driver);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (scalar keys %{$attributes}) {
print "\n\tDynamic attributes available\n";
@@ -2886,8 +2909,8 @@ sub listDriverAttributes {
my $attributes = $SCST->targetCreateAttributes($driver);
return if issueWarning($SCST->errorString());
return if (!scalar keys %{$attributes});
return TRUE if issueWarning($SCST->errorString());
return TRUE if (!scalar keys %{$attributes});
print "\n\tTarget CREATE attributes available:\n";
print "\t-----------------------------------\n";
@@ -2896,6 +2919,8 @@ sub listDriverAttributes {
print "\t$attribute\n";
}
}
return FALSE;
}
sub listTargetAttributes {
@@ -2905,7 +2930,7 @@ sub listTargetAttributes {
my $attributes = $SCST->targetAttributes($driver, $target);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such driver/target '$driver/$target' found.\n";
@@ -2917,7 +2942,7 @@ sub listTargetAttributes {
if ($SCST->driverIsVirtualCapable($driver)) {
$attributes = $SCST->targetDynamicAttributes($driver);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (scalar keys %{$attributes}) {
print "\n\tDynamic attributes available\n";
@@ -2931,8 +2956,8 @@ sub listTargetAttributes {
$attributes = $SCST->lunCreateAttributes($driver, $target);
return if issueWarning($SCST->errorString());
return if (!scalar keys %{$attributes});
return TRUE if issueWarning($SCST->errorString());
return TRUE if (!scalar keys %{$attributes});
print "\n\tLUN CREATE attributes available\n";
print "\t-------------------------------\n";
@@ -2940,6 +2965,8 @@ sub listTargetAttributes {
foreach my $attribute (keys %{$attributes}) {
print "\t$attribute\n";
}
return FALSE;
}
sub listGroupAttributes {
@@ -2950,7 +2977,7 @@ sub listGroupAttributes {
my $attributes = $SCST->groupAttributes($driver, $target, $group);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such driver/target/group '$driver/$target/$group' found.\n";
@@ -2962,8 +2989,8 @@ sub listGroupAttributes {
$attributes = $SCST->lunCreateAttributes($driver, $target, $group);
return if issueWarning($SCST->errorString());
return if (!scalar keys %{$attributes});
return TRUE if issueWarning($SCST->errorString());
return TRUE if (!scalar keys %{$attributes});
print "\n\tLUN CREATE attributes available\n";
print "\t-------------------------------\n";
@@ -2974,8 +3001,8 @@ sub listGroupAttributes {
$attributes = $SCST->initiatorCreateAttributes($driver, $target, $group);
return if issueWarning($SCST->errorString());
return if (!scalar keys %{$attributes});
return TRUE if issueWarning($SCST->errorString());
return TRUE if (!scalar keys %{$attributes});
print "\n\tInitiator CREATE attributes available\n";
print "\t-------------------------------------\n";
@@ -2983,6 +3010,8 @@ sub listGroupAttributes {
foreach my $attribute (keys %{$attributes}) {
print "\t$attribute\n";
}
return FALSE;
}
sub listLunAttributes {
@@ -2994,7 +3023,7 @@ sub listLunAttributes {
my $attributes = $SCST->lunAttributes($driver, $target, $lun, $group);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
if ($group ne '') {
@@ -3024,7 +3053,7 @@ sub listInitiatorAttributes {
return;
}
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
if (!scalar(keys %{$attributes})) {
print "No such driver/target/group/initiator '$driver/$target/$group/$initiator' found.\n";
@@ -3058,7 +3087,7 @@ sub setScstAttributes {
my $error = "\t-> WARNING: SCST lacks the settable attribute '%s', ignoring.\n\n";
my $_attributes = $SCST->scstAttributes();
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
return setAttributes(undef, undef, undef, undef, $attributes,
$_attributes, $error, \&setScstAttribute, $showset);
@@ -3088,7 +3117,7 @@ sub setDeviceAttributes {
"attribute '%s', ignoring.\n\n";
my $_attributes = $SCST->deviceAttributes($device);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
return setAttributes(undef, undef, undef, $device, $attributes,
$_attributes, $error, \&setDeviceAttribute, $showset);
@@ -3118,7 +3147,7 @@ sub setHandlerAttributes {
"attribute '%s', ignoring.\n\n";
my $_attributes = $SCST->handlerAttributes($handler);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
return setAttributes(undef, undef, undef, $handler, $attributes,
$_attributes, $error, \&setHandlerAttribute, $showset);
@@ -3151,7 +3180,7 @@ sub setGroupAttributes {
"attribute '%s', ignoring.\n\n";
my $_attributes = $SCST->groupAttributes($driver, $target, $group);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
return setAttributes(undef, $driver, $target, $group, $attributes,
$_attributes, $error, \&setGroupAttribute, $showset);
@@ -3198,7 +3227,7 @@ sub setLunAttributes {
my $_attributes = $SCST->lunAttributes($driver, $target, $lun, $group);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
return setAttributes($driver, $target, $lun, $group, $attributes,
$_attributes, $error, \&setLunAttribute, $showset);
@@ -3231,7 +3260,7 @@ sub setInitiatorAttributes {
my $_attributes = $SCST->initiatorAttributes($driver, $target, $group, $initiator);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
# As if writing, initiators didn't have attributes. This will
# allow us to support it in the future.
@@ -3326,7 +3355,7 @@ sub setDriverAttributes {
my $driverCap = $SCST->driverIsVirtualCapable($driver);
my $_attributes = $SCST->driverAttributes($driver);
return if issueWarning($SCST->errorString());
return 0 if issueWarning($SCST->errorString());
# build caches for easier matching
foreach my $attribute (keys %{$attributes}) {
@@ -3399,7 +3428,7 @@ sub addDriverDynamicAttributes {
my $_attributes = $SCST->driverAttributes($driver);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
my $existing = cacheAttributes($_attributes);
@@ -3412,6 +3441,8 @@ sub addDriverDynamicAttributes {
addDriverDynamicAttribute($driver, $attribute, $$attributes{$attribute});
}
return FALSE;
}
sub addDriverDynamicAttribute {
@@ -3424,6 +3455,8 @@ sub addDriverDynamicAttribute {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub removeDriverDynamicAttributes {
@@ -3432,7 +3465,7 @@ sub removeDriverDynamicAttributes {
my $_attributes = $SCST->driverAttributes($driver);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
my $existing = cacheAttributes($_attributes);
@@ -3445,6 +3478,8 @@ sub removeDriverDynamicAttributes {
removeDriverDynamicAttribute($driver, $attribute, $$attributes{$attribute});
}
return FALSE;
}
sub removeDriverDynamicAttribute {
@@ -3452,13 +3487,15 @@ sub removeDriverDynamicAttribute {
my $attribute = shift;
my $value = shift;
return if (!$SCST->driverIsVirtualCapable($driver));
return TRUE if (!$SCST->driverIsVirtualCapable($driver));
print "\t-> Removing dynamic attribute '$attribute' with value '$value' for driver '$driver': ";
my $rc = $SCST->removeDriverDynamicAttribute($driver, $attribute, $value);
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub setTargetAttribute {
@@ -3479,6 +3516,8 @@ sub setTargetAttribute {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub setTargetAttributes {
@@ -3492,7 +3531,7 @@ sub setTargetAttributes {
my $driverCap = $SCST->driverIsVirtualCapable($driver);
my $_attributes = $SCST->targetAttributes($driver, $target);
return if issueWarning($SCST->errorString());
return 0 if issueWarning($SCST->errorString());
# build caches for easier matching
foreach my $attribute (keys %{$attributes}) {
@@ -3568,7 +3607,7 @@ sub addTargetDynamicAttributes {
my $_attributes = $SCST->targetAttributes($driver, $target);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
my $existing = cacheAttributes($_attributes);
@@ -3582,6 +3621,8 @@ sub addTargetDynamicAttributes {
addTargetDynamicAttribute($driver, $target, $attribute, $$attributes{$attribute});
}
return FALSE;
}
sub addTargetDynamicAttribute {
@@ -3596,6 +3637,8 @@ sub addTargetDynamicAttribute {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub removeTargetDynamicAttributes {
@@ -3605,7 +3648,7 @@ sub removeTargetDynamicAttributes {
my $_attributes = $SCST->targetAttributes($driver, $target);
return if issueWarning($SCST->errorString());
return TRUE if issueWarning($SCST->errorString());
my $existing = cacheAttributes($_attributes);
@@ -3619,6 +3662,8 @@ sub removeTargetDynamicAttributes {
removeTargetDynamicAttribute($driver, $target, $attribute, $$attributes{$attribute});
}
return FALSE;
}
sub removeTargetDynamicAttribute {
@@ -3627,13 +3672,15 @@ sub removeTargetDynamicAttribute {
my $attribute = shift;
my $value = shift;
return if (!$SCST->driverIsVirtualCapable($driver));
return TRUE if (!$SCST->driverIsVirtualCapable($driver));
print "\t-> Removing dynamic attribute '$attribute' with value '$value' for driver/target '$driver/$target': ";
my $rc = $SCST->removeTargetDynamicAttribute($driver, $target, $attribute, $value);
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
####################################################################
@@ -3650,6 +3697,8 @@ sub openDevice {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub closeDevice {
@@ -3674,13 +3723,15 @@ sub closeDevice {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub resyncDevice {
my $device = shift;
my %attributes = ('resync_size', 1);
setDeviceAttributes($device, \%attributes);
return setDeviceAttributes($device, \%attributes);
}
####################################################################
@@ -3697,6 +3748,8 @@ sub addGroup {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub removeGroup {
@@ -3722,6 +3775,8 @@ sub removeGroup {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
####################################################################
@@ -3754,6 +3809,8 @@ sub addInitiator {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub removeInitiator {
@@ -3770,6 +3827,8 @@ sub removeInitiator {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub moveInitiator {
@@ -3786,6 +3845,8 @@ sub moveInitiator {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub clearInitiators {
@@ -3800,6 +3861,8 @@ sub clearInitiators {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
####################################################################
@@ -3825,6 +3888,8 @@ sub addLun {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub removeLun {
@@ -3846,6 +3911,8 @@ sub removeLun {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub replaceLun {
@@ -3864,6 +3931,8 @@ sub replaceLun {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub clearLuns {
@@ -3882,12 +3951,14 @@ sub clearLuns {
print "done.\n";
immediateExit($SCST->errorString($rc)) if ($rc);
return FALSE;
}
sub clearDriverDynamicAttributes {
my $driver = shift;
return if (!$SCST->driverIsVirtualCapable($driver));
return TRUE if (!$SCST->driverIsVirtualCapable($driver));
print "\t-> Removing all dynamic attributes from driver '$driver': ";
@@ -3908,13 +3979,15 @@ sub clearDriverDynamicAttributes {
}
print "done.\n";
return FALSE;
}
sub clearTargetDynamicAttributes {
my $driver = shift;
my $target = shift;
return if (!$SCST->driverIsVirtualCapable($driver));
return TRUE if (!$SCST->driverIsVirtualCapable($driver));
print "\t-> Removing all dynamic attributes from driver/target '$driver/$target': ";
@@ -3935,6 +4008,8 @@ sub clearTargetDynamicAttributes {
}
print "done.\n";
return FALSE;
}
####################################################################
@@ -3945,6 +4020,8 @@ sub enableTarget {
my %attributes = ('enabled', 1);
setTargetAttributes($driver, $target, \%attributes);
return FALSE;
}
sub disableTarget {
@@ -3953,6 +4030,8 @@ sub disableTarget {
my %attributes = ('enabled', 0);
setTargetAttributes($driver, $target, \%attributes);
return FALSE;
}
sub enableDriver {
@@ -3960,9 +4039,9 @@ sub enableDriver {
my %attributes = ('enabled', 1);
my $attrs = $SCST->driverAttributes($driver);
return if (!defined($$attrs{'enabled'}));
return TRUE if (!defined($$attrs{'enabled'}));
setDriverAttributes($driver, \%attributes);
return setDriverAttributes($driver, \%attributes);
}
sub disableDriver {
@@ -3970,9 +4049,9 @@ sub disableDriver {
my %attributes = ('enabled', 0);
my $attrs = $SCST->driverAttributes($driver);
return if (!defined($$attrs{'enabled'}));
return TRUE if (!defined($$attrs{'enabled'}));
setDriverAttributes($driver, \%attributes);
return setDriverAttributes($driver, \%attributes);
}
sub issueLip {
@@ -4084,6 +4163,8 @@ sub readConfigFile {
@buff_a = split(//, $buffer);
$CONFIG = parseStanza(\@buff_a);
return FALSE;
}
sub parseStanza {
@@ -4383,6 +4464,8 @@ sub addAllGroupsToTarget {
%{$$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}->{'LUN'}->{$lun}->{$device}} = ();
}
}
return FALSE;
}
sub findTargetDriver {
@@ -4496,7 +4579,7 @@ sub numerically {
sub immediateExit {
my $error = shift;
return if (!$error);
return FALSE if (!$error);
print "\n\nFATAL: Received the following error:\n\n\t";
print "$error\n\n";