mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-18 11:11:27 +00:00
- Fix virtual targets for drivers which also support hardware targets.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@2392 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -780,9 +780,10 @@ sub targetType {
|
||||
my $target = shift;
|
||||
|
||||
if ($self->driverIsVirtualCapable($driver)) {
|
||||
my $attribs = $self->driverAttributes($driver);
|
||||
my $attribs = $self->targetAttributes($driver, $target);
|
||||
|
||||
if (defined($$attribs{'hw_target'})) {
|
||||
if (defined($$attribs{'hw_target'}) &&
|
||||
($$attribs{'hw_target'}->{'value'} == TRUE)) {
|
||||
return $TGT_TYPE_HARDWARE;
|
||||
} else {
|
||||
return $TGT_TYPE_VIRTUAL;
|
||||
|
||||
@@ -1188,28 +1188,30 @@ sub writeConfiguration {
|
||||
$drv_attr_buff_nk .= "\n" if ($drv_attr_buff_nk);
|
||||
|
||||
my $targets = $CURRENT{'assign'}->{$driver};
|
||||
my $tgt_attrs = $SCST->targetCreateAttributes($driver);
|
||||
|
||||
my $target_buff;
|
||||
foreach my $target (sort keys %{$targets}) {
|
||||
$target_buff .= "\tTARGET $target";
|
||||
|
||||
my $tgt_attrs = $SCST->targetAttributes($driver, $target);
|
||||
my $attributes = $SCST->targetAttributes($driver, $target);
|
||||
|
||||
my $attribute_buff;
|
||||
my $attribute_buff_nk;
|
||||
foreach my $attr (keys %{$tgt_attrs}) {
|
||||
next if ($$tgt_attrs{$attr}->{'static'});
|
||||
next if ($$tgt_attrs{$attr}->{'set'});
|
||||
foreach my $attr (keys %{$attributes}) {
|
||||
next if ($$attributes{$attr}->{'static'} &&
|
||||
!defined($$tgt_attrs{$attr}));
|
||||
next if ($$attributes{$attr}->{'set'});
|
||||
|
||||
if (defined($$tgt_attrs{$attr}->{'keys'})) {
|
||||
foreach my $key (keys %{$$tgt_attrs{$attr}->{'keys'}}) {
|
||||
my $value = $$tgt_attrs{$attr}->{'keys'}->{$key}->{'value'};
|
||||
if (defined($$attributes{$attr}->{'keys'})) {
|
||||
foreach my $key (keys %{$$attributes{$attr}->{'keys'}}) {
|
||||
my $value = $$attributes{$attr}->{'keys'}->{$key}->{'value'};
|
||||
$value = "\"$value\"" if ($value =~ / /);
|
||||
$attribute_buff .= "\t\t$attr $value\n"
|
||||
if (defined($value));
|
||||
}
|
||||
} elsif (($attr eq 'enabled') || $nonkey) {
|
||||
my $value = $$tgt_attrs{$attr}->{'value'};
|
||||
my $value = $$attributes{$attr}->{'value'};
|
||||
$value = "\"$value\"" if ($value =~ /\s/);
|
||||
if ($attr eq 'enabled') {
|
||||
$attribute_buff .= "\t\t$attr $value\n"
|
||||
@@ -1993,7 +1995,9 @@ sub applyTargetAssignments {
|
||||
|
||||
foreach my $target (keys %{$CURRENT{'assign'}->{$driver}}) {
|
||||
if (!defined($$targets{$target})) {
|
||||
if ($deletions) {
|
||||
my $isVirtual = ($SCST->targetType($driver, $target) == $SCST::SCST::TGT_TYPE_VIRTUAL);
|
||||
|
||||
if ($deletions && $isVirtual) {
|
||||
my $rc = removeVirtualTarget($driver, $target);
|
||||
immediateExit($SCST->errorString($rc)) if ($rc);
|
||||
$changes++;
|
||||
@@ -2174,6 +2178,7 @@ sub clearConfiguration {
|
||||
|
||||
clearLuns($driver, $target);
|
||||
removeTargetDynamicAttributes($driver, $target);
|
||||
|
||||
if ($SCST->targetType($driver, $target) == $SCST::SCST::TGT_TYPE_VIRTUAL) {
|
||||
my $rc = removeVirtualTarget($driver, $target);
|
||||
issueWarning($SCST->errorString($rc)) if ($rc);
|
||||
|
||||
Reference in New Issue
Block a user