iSCSI/SCSI multi port/ALUA support
fix ALUA flag issue fix NNA flag issue fix fixed format sense data builder issue
This commit is contained in:
@@ -31,15 +31,40 @@ func (s *SCSITargetService) NewSCSITarget(tid int, driverName, name string) (*ap
|
||||
|
||||
// verify the low level driver
|
||||
var target = &api.SCSITarget{
|
||||
Name: name,
|
||||
TID: tid,
|
||||
Name: name,
|
||||
TID: tid,
|
||||
TargetPortGroups: []*api.TargetPortGroup{},
|
||||
}
|
||||
tpg := &api.TargetPortGroup{0, []*api.SCSITargetPort{}}
|
||||
s.Targets = append(s.Targets, target)
|
||||
target.Devices = GetTargetLUNMap(target.Name)
|
||||
target.LUN0 = NewLUN0()
|
||||
target.TargetPortGroups = append(target.TargetPortGroups, tpg)
|
||||
return target, nil
|
||||
}
|
||||
|
||||
func FindTargetGroup(target *api.SCSITarget, relPortID uint16) uint16 {
|
||||
for _, tpg := range target.TargetPortGroups {
|
||||
for _, port := range tpg.TargetPortGroup {
|
||||
if port.RelativeTargetPortID == relPortID {
|
||||
return tpg.GroupID
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func FindTargetPort(target *api.SCSITarget, relPortID uint16) *api.SCSITargetPort {
|
||||
for _, tpg := range target.TargetPortGroups {
|
||||
for _, port := range tpg.TargetPortGroup {
|
||||
if port.RelativeTargetPortID == relPortID {
|
||||
return port
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func deviceReserve(cmd *api.SCSICommand) error {
|
||||
var lu *api.SCSILu
|
||||
lun := *(*uint64)(unsafe.Pointer(&cmd.Lun))
|
||||
|
||||
Reference in New Issue
Block a user