17
citd.go
17
citd.go
@@ -22,7 +22,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"reflect"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
@@ -70,29 +69,25 @@ Help Options:
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
service := scsi.NewSCSITargetService()
|
scsiTarget := scsi.NewSCSITargetService()
|
||||||
t, err := port.NewTargetService(*flDriver, service)
|
targetDriver, err := port.NewTargetService(*flDriver, scsiTarget)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
iscsit := reflect.ValueOf(t)
|
|
||||||
// create a new target
|
|
||||||
for tgtname, tgt := range config.Targets {
|
for tgtname, tgt := range config.Targets {
|
||||||
create := iscsit.MethodByName("NewTarget")
|
targetDriver.NewTarget(tgtname, tgt.Portals)
|
||||||
create.Call([]reflect.Value{reflect.ValueOf(tgtname),
|
|
||||||
reflect.ValueOf(tgt.Portals)})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||||
// run a service
|
// run a service
|
||||||
run := iscsit.MethodByName("Run")
|
go targetDriver.Run()
|
||||||
go run.Call([]reflect.Value{})
|
|
||||||
|
|
||||||
serverConfig := &apiserver.Config{
|
serverConfig := &apiserver.Config{
|
||||||
Addrs: []apiserver.Addr{},
|
Addrs: []apiserver.Addr{},
|
||||||
}
|
}
|
||||||
//hosts := []string{"unix:///var/run/gotgt.sock"}
|
|
||||||
hosts := []string{}
|
hosts := []string{}
|
||||||
if *flHost != "" {
|
if *flHost != "" {
|
||||||
hosts = append(hosts, *flHost)
|
hosts = append(hosts, *flHost)
|
||||||
|
|||||||
@@ -36,13 +36,13 @@ func RegisterTargetService(name string, f TargetServiceFunc) {
|
|||||||
registeredPlugins[name] = f
|
registeredPlugins[name] = f
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTargetService(name string, s *scsi.SCSITargetService) (SCSITargetService, error) {
|
func NewTargetService(targetDriverName string, s *scsi.SCSITargetService) (SCSITargetService, error) {
|
||||||
if name == "" {
|
if targetDriverName == "" {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
f, ok := registeredPlugins[name]
|
targetInitFunc, ok := registeredPlugins[targetDriverName]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("SCSI target driver %s is not found.", name)
|
return nil, fmt.Errorf("SCSI target driver %s is not found.", targetDriverName)
|
||||||
}
|
}
|
||||||
return f(s)
|
return targetInitFunc(s)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user