remove task from PendingTasks queue

This commit is contained in:
chessman
2019-06-28 19:56:14 +03:00
parent 791e74fea5
commit db2ed21438
2 changed files with 36 additions and 20 deletions
+23 -3
View File
@@ -273,12 +273,12 @@ func (tq taskQueue) Swap(i, j int) {
tq[i], tq[j] = tq[j], tq[i]
}
func (tq *taskQueue) Push(x interface{}) {
item := x.(*iscsiTask)
func (tq *taskQueue) Push(x *iscsiTask) {
item := x
*tq = append(*tq, item)
}
func (tq *taskQueue) Pop() interface{} {
func (tq *taskQueue) Pop() *iscsiTask {
old := *tq
n := len(old)
item := old[n-1]
@@ -286,6 +286,26 @@ func (tq *taskQueue) Pop() interface{} {
return item
}
func (tq taskQueue) GetByTag(tag uint32) *iscsiTask {
for _, t := range tq {
if t.tag == tag {
return t
}
}
return nil
}
func (tq *taskQueue) RemoveByTag(tag uint32) *iscsiTask {
old := *tq
for i, t := range old {
if t.tag == tag {
*tq = append(old[:i], old[i+1:]...)
return t
}
}
return nil
}
func (s *ISCSITargetDriver) LookupISCSISession(tgtName string, iniName string, isid uint64, tsih uint16, tpgt uint16) *ISCSISession {
var (
tgt *ISCSITarget