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:
Le Zhang
2016-10-14 16:46:34 +08:00
parent b9b9508817
commit 547faf684d
17 changed files with 333 additions and 107 deletions

View File

@@ -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))