PowerMax driver may deadlock moving volumes between SGs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Cinder |
In Progress
|
Low
|
Gorka Eguileor |
Bug Description
There's a potential deadlock scenario in PowerMax's masking.py move_volume_
The method uses 2 locks, one for the source Storage Group and another for the destination Storage Group, and it could happen that if 2 requests going in opposite directions are received simultaneously their first lock acquisition interleaves resulting in a deadlock situation.
@coordinati
@coordinati
def move_volume_
self, serial_number, device_id, source_
The scenario would be like this:
- User requests an instance migration from A to B
- User requests an instance migration from B to A
- Driver acquires the first lock for A-to-B which is something like cinder-
- Driver acquires the first lock for B-to-A which is something like cinder-
The deadlock happens because A-to-B waits forever for the lock held by the B-to-A operation, which in turn cannot proceed because it’s waiting for lock help by A-to-B.
Changed in cinder: | |
status: | New → In Progress |
tags: | added: drivers |
Fix proposed to master https:/ /review. opendev. org/c/openstack /cinder/ +/848900