From: <mga...@us...> - 2010-08-03 13:44:54
|
Revision: 1911 http://scst.svn.sourceforge.net/scst/?rev=1911&view=rev Author: mgandalf Date: 2010-08-03 13:44:49 +0000 (Tue, 03 Aug 2010) Log Message: ----------- - Enhance checkConfiguration() a bit. Modified Paths: -------------- trunk/scstadmin/scstadmin.sysfs/scstadmin Modified: trunk/scstadmin/scstadmin.sysfs/scstadmin =================================================================== --- trunk/scstadmin/scstadmin.sysfs/scstadmin 2010-08-03 13:41:54 UTC (rev 1910) +++ trunk/scstadmin/scstadmin.sysfs/scstadmin 2010-08-03 13:44:49 UTC (rev 1911) @@ -1243,6 +1243,8 @@ my $file = shift; my $no_drivers; my $no_handlers; + my $warnings = 0; + my $errors = 0; print "-> Checking configuration file '$file' for errors.\n"; @@ -1254,6 +1256,7 @@ print "\t-> WARNING: No TARGET_DRIVER section defined. ". "No target drivers will be configured.\n\n"; $no_drivers = TRUE; + $warnings++; } if (!defined($$CONFIG{'HANDLER'}) || @@ -1261,10 +1264,12 @@ print "\t-> WARNING: No HANDLER section defined. ". "Only physical media will be configured for targets.\n\n"; $no_handlers = TRUE; + $warnings++; } if ($no_drivers && $no_handlers) { - immediateExit("No target drivers or handlers defined, aborting!"); + print "FATAL: No target drivers or handlers defined, aborting!\n"; + $errors++; } if (!$no_drivers) { @@ -1273,12 +1278,14 @@ if (!defined($CURRENT{'assign'}->{$driver})) { print "\t-> WARNING: Target driver '$driver' is not loaded or available.\n\n"; + $warnings++; next; } if (!defined($$CONFIG{'TARGET_DRIVER'}->{$driver}->{'TARGET'}) || !(scalar keys %{$$CONFIG{'TARGET_DRIVER'}->{$driver}->{'TARGET'}})) { print "\t-> WARNING: Driver '$driver' has no configured targets.\n\n"; + $warnings++; $no_targets = TRUE; } @@ -1288,7 +1295,7 @@ if (!$SCST->driverIsVirtualCapable($driver)) { print "\t-> FATAL: Target '$target' for driver '$driver' ". "does not exist.\n"; - return TRUE; + $errors++; } } } @@ -1299,6 +1306,13 @@ my %cdevices; foreach my $handler (sort keys %{$$CONFIG{'HANDLER'}}) { + if (!$SCST->handlerExists($handler)) { + print "\t-> WARNING: No such handler '$handler' available, ignoring.\n"; + delete $$CONFIG{'HANDLER'}->{$handler}; + $warnings++; + next; + } + foreach my $device (sort keys %{$$CONFIG{'HANDLER'}->{$handler}->{'DEVICE'}}) { # Since some people may get confused with how to open # a vcdrom, we'll support having '/dev/cdrom' instead of just 'cdrom'. @@ -1310,15 +1324,16 @@ "not contain the full /dev path, please change to '$_device'.\n\n"; delete $$CONFIG{'HANDLER'}->{$handler}->{'DEVICE'}->{$device}; $$CONFIG{'HANDLER'}->{$handler}->{'DEVICE'}->{$_device} = $tree; + $warnings++; } elsif ($device =~ /\//) { print "\t-> FATAL: Device '$device' configured for handler '$handler' may not ". "contain character '/'.\n"; - return TRUE; + $errors++; } $cdevices{$device}++; } - } + } foreach my $driver (keys %{$$CONFIG{'TARGET_DRIVER'}}) { foreach my $target (keys %{$$CONFIG{'TARGET_DRIVER'}->{$driver}->{'TARGET'}}) { @@ -1332,6 +1347,7 @@ "'$driver/$target' at LUN $lun is not defined within configuration, ". "removing it.\n\n"; delete $$tgt{'LUN'}->{$lun}; + $warnings++; } } } @@ -1347,6 +1363,7 @@ "driver/target '$driver/$target' at LUN $lun is not ". "defined within configuration, removing it.\n\n"; delete $$tgt{'GROUP'}->{$group}->{'LUN'}->{$lun}; + $warnings++; } } } @@ -1356,6 +1373,13 @@ } } + if ($errors) { + print "\t-> Done, $errors errors found.\n"; + return TRUE; + } + + print "\t-> Done, $warnings warnings found.\n"; + return FALSE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |