From ed9a0bd470433b4eae1692efc9c9ba9928a9933c Mon Sep 17 00:00:00 2001 From: Mark Buechler Date: Fri, 20 Aug 2010 14:59:38 +0000 Subject: [PATCH] - Added in add_target & rem_target options. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1960 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scstadmin/scstadmin.sysfs/scstadmin | 57 ++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/scstadmin/scstadmin.sysfs/scstadmin b/scstadmin/scstadmin.sysfs/scstadmin index e8ac1506c..25379b54a 100755 --- a/scstadmin/scstadmin.sysfs/scstadmin +++ b/scstadmin/scstadmin.sysfs/scstadmin @@ -94,7 +94,7 @@ Device Operations Target Operations -add_target : Add a dynamic target to a capable driver. -driver - -remove_target : Remove a dynamic target from a driver. + -rem_target : Remove a dynamic target from a driver. -driver Group Operations @@ -259,6 +259,9 @@ sub getArgs { my $closeDev; my $resyncDev; + my $addTarget; + my $removeTarget; + my $addGroup; my $removeGroup; @@ -328,6 +331,9 @@ sub getArgs { 'close_dev=s' => \$closeDev, 'resync_dev=s' => \$resyncDev, + 'add_target=s' => \$addTarget, + 'rem_target=s' => \$removeTarget, + 'add_group=s' => \$addGroup, 'remove_group=s' => \$removeGroup, @@ -385,6 +391,7 @@ sub getArgs { defined($openDev) + defined($closeDev) + defined($addGroup) + defined($removeGroup) + defined($addInitiator) + defined($removeInitiator) + defined($clearInitiators) + defined($addDriverAttr) + defined($addTargetAttr) + defined($remDriverAttr) + defined($remTargetAttr) + + defined($addTarget) + defined($removeTarget) + defined($addLun) + defined($removeLun) + defined($replaceLun) + defined($clearLuns) + defined($enableTarget) + defined($disableTarget) + defined($issueLip); @@ -477,6 +484,16 @@ sub getArgs { usage(); } + if (defined($addTarget) && !defined($driver)) { + print "Please specify -driver with -add_target.\n"; + usage(); + } + + if (defined($removeTarget) && !defined($driver)) { + print "Please specify -driver with -rem_target.\n"; + usage(); + } + if ((defined($addGroup) || defined($removeGroup)) && (!defined($driver) || !defined($target))) { print "Please specify -driver and -target with -add_group/-remove_group.\n"; @@ -532,6 +549,7 @@ sub getArgs { $setDriverAttr, $setTargetAttr, $setLunAttr, $setInitiatorAttr, $addDriverAttr, $addTargetAttr, $remDriverAttr, $remTargetAttr, $openDev, $closeDev, $resyncDev, + $addTarget, $removeTarget, $addGroup, $removeGroup, $addInitiator, $removeInitiator, $moveInitiator, $clearInitiators, $addLun, $removeLun, $replaceLun, $clearLuns, @@ -556,6 +574,7 @@ sub main { $setDriverAttr, $setTargetAttr, $setLunAttr, $setInitiatorAttr, $addDriverAttr, $addTargetAttr, $remDriverAttr, $remTargetAttr, $openDev, $closeDev, $resyncDev, + $addTarget, $removeTarget, $addGroup, $removeGroup, $addInitiator, $removeInitiator, $moveInitiator, $clearInitiators, $addLun, $removeLun, $replaceLun, $clearLuns, @@ -697,6 +716,14 @@ sub main { $rc = resyncDevice($resyncDev); last SWITCH; }; + defined($addTarget) && do { + $rc = addVirtualTarget($driver, $addTarget); + last SWITCH; + }; + defined($removeTarget) && do { + $rc = removeVirtualTarget($driver, $removeTarget); + last SWITCH; + }; defined($addGroup) && do { $rc = addGroup($driver, $target, $addGroup); last SWITCH; @@ -750,8 +777,6 @@ sub main { last SWITCH; }; - return if issueWarning($SCST->errorString($rc)); - if (!$all_good) { print "No valid operations specified.\n"; usage(); @@ -759,6 +784,8 @@ sub main { } } + issueWarning($SCST->errorString($rc)) if ($rc); + print "\nAll done.\n"; exit $rc; @@ -1642,11 +1669,7 @@ sub applyTargetAssignments { if (!$SCST->driverIsVirtualCapable($driver)) { immediateExit("Target '$target' for driver '$driver' does not exist."); } else { - # TODO: Add $attributes - print "-> Creating target '$target' for driver '$driver': "; - my $rc = $SCST->addVirtualTarget($driver, $target); - print "done.\n"; - + my $rc = addVirtualTarget($driver, $target); immediateExit($SCST->errorString($rc)) if ($rc); } } @@ -1759,7 +1782,8 @@ sub clearConfiguration { clearLuns($driver, $target); removeTargetDynamicAttributes($driver, $target); if ($SCST->targetType($driver, $target) == $SCST::SCST::TGT_TYPE_VIRTUAL) { - removeVirtualTarget($driver, $target); + my $rc = removeVirtualTarget($driver, $target); + issueWarning($rc) if ($rc); } } @@ -1781,6 +1805,19 @@ sub clearConfiguration { # TODO: should we disable all target drivers as well? } +sub addVirtualTarget { + my $driver = shift; + my $target = shift; + + # TODO: Add $attributes + + print "-> Creating target '$target' for driver '$driver': "; + my $rc = $SCST->addVirtualTarget($driver, $target); + print "done.\n"; + + return $rc; +} + sub removeVirtualTarget { my $driver = shift; my $target = shift; @@ -1789,7 +1826,7 @@ sub removeVirtualTarget { my $rc = $SCST->removeVirtualTarget($driver, $target); print "done.\n"; - # Todo - check return code + return $rc; } ####################################################################