mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-17 18:51:27 +00:00
- When reading and old configuration file, if no targets
are enabled, add groups/initiators for all known targets. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1851 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -46,7 +46,7 @@ Query Operations
|
||||
|
||||
-list_sessions : List all current initiator sessions.
|
||||
|
||||
Set Operations
|
||||
Set Attribute Operations
|
||||
-set_scst_attr : Sets SCST attribute(s) <p> to value <v>.
|
||||
-attributes <p=v,...>
|
||||
-set_hnd_attr <hndlr> : Sets handler attribute(s) <p> to value <v>.
|
||||
@@ -69,6 +69,20 @@ Set Operations
|
||||
-group <group>
|
||||
-attributes <p=v,...>
|
||||
|
||||
Add Dynamic Attribute Operations
|
||||
-add_drv_attr <driver> : Adds driver attribute(s) <p> to value <v>.
|
||||
-attributes <p=v,...>
|
||||
-add_tgt_attr <target> : Adds target attribute(s) <p> to value <v>.
|
||||
-driver <driver>
|
||||
-attributes <p=v,...>
|
||||
|
||||
Remove Dynamic Attribute Operations
|
||||
-rem_drv_attr <driver> : Remove driver attribute(s) <p> to value <v>.
|
||||
-attributes <p=v,...>
|
||||
-rem_tgt_attr <target> : Remove target attribute(s) <p> to value <v>.
|
||||
-driver <driver>
|
||||
-attributes <p=v,...>
|
||||
|
||||
Device Operations
|
||||
-open_dev <device> : Adds a new device using handler <handler>.
|
||||
-handler <handler>
|
||||
@@ -2950,31 +2964,56 @@ sub readOldConfig {
|
||||
|
||||
if ($driver) {
|
||||
%{$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'enabled'}->{'1'}} = ();
|
||||
|
||||
foreach my $group (keys %{$config{'GROUP'}}) {
|
||||
%{$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}} = ();
|
||||
if (defined($config{'GROUP'}->{$group}->{'USER'})) {
|
||||
foreach my $user (@{$config{'GROUP'}->{$group}->{'USER'}}) {
|
||||
%{$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}->{'INITIATOR'}->{$user}} = ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $group (keys %{$config{'ASSIGNMENT'}}) {
|
||||
foreach my $device (@{$config{'ASSIGNMENT'}->{$group}->{'DEVICE'}}) {
|
||||
my($device, $lun) = split(/\,/, $device);
|
||||
%{$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}->{'LUN'}->{$lun}->{$device}} = ();
|
||||
}
|
||||
}
|
||||
addTargetToConfig(\%config, \%new, $driver, $target);
|
||||
} else {
|
||||
immediateExit("Unable to determine target driver information for target '$wwn'. ".
|
||||
"Please ensure this target driver is loaded.");
|
||||
}
|
||||
}
|
||||
|
||||
if (!scalar keys %{$new{'TARGET_DRIVER'}}) {
|
||||
# Fill in with known targets, all disabled.
|
||||
print "WARNING: There are no enabled targets in your configuration. I'll use existing targets, however, ".
|
||||
"this will make assignments available for all loaded targets.\n\n";
|
||||
my $drivers = $SCST->drivers();
|
||||
|
||||
foreach my $driver (@{$drivers}) {
|
||||
my $targets = $SCST->targets($driver);
|
||||
|
||||
foreach my $target (@{$targets}) {
|
||||
%{$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'enabled'}->{'0'}} = ();
|
||||
|
||||
addTargetToConfig(\%config, \%new, $driver, $target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return \%new;
|
||||
}
|
||||
|
||||
sub addTargetToConfig {
|
||||
my $config = shift;
|
||||
my $new = shift;
|
||||
my $driver = shift;
|
||||
my $target = shift;
|
||||
|
||||
foreach my $group (keys %{$$config{'GROUP'}}) {
|
||||
%{$$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}} = ();
|
||||
if (defined($$config{'GROUP'}->{$group}->{'USER'})) {
|
||||
foreach my $user (@{$$config{'GROUP'}->{$group}->{'USER'}}) {
|
||||
%{$$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}->{'INITIATOR'}->{$user}} = ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $group (keys %{$$config{'ASSIGNMENT'}}) {
|
||||
foreach my $device (@{$$config{'ASSIGNMENT'}->{$group}->{'DEVICE'}}) {
|
||||
my($device, $lun) = split(/\,/, $device);
|
||||
%{$$new{'TARGET_DRIVER'}->{$driver}->{'TARGET'}->{$target}->{'GROUP'}->{$group}->{'LUN'}->{$lun}->{$device}} = ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub findTargetDriver {
|
||||
my $target = shift;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user