From 42e623f99442d638dd9e7723a82b36619b25acf8 Mon Sep 17 00:00:00 2001 From: Mark Buechler Date: Tue, 7 Dec 2010 17:40:16 +0000 Subject: [PATCH] - 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 --- scstadmin/scstadmin.sysfs/scstadmin | 179 ++++++++++++++++++++-------- 1 file changed, 131 insertions(+), 48 deletions(-) diff --git a/scstadmin/scstadmin.sysfs/scstadmin b/scstadmin/scstadmin.sysfs/scstadmin index f4b3064c2..cbb8f8de6 100755 --- a/scstadmin/scstadmin.sysfs/scstadmin +++ b/scstadmin/scstadmin.sysfs/scstadmin @@ -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";