LINSTOR LOCK ORDER INFORMATION
===================================

To avoid deadlocks, locking on multiple objects must always take place
in the same order.

The current lock order, from the outer-most (taken first) lock to the
inner-most (taken last) lock, is:

1. WorkerPool.workQueueGuard (Semaphore)
   Do not queue WorkerPool tasks recursively.
   (Queuing tasks in the WorkerPool from within a task that is being
    run by the WorkerPool may result in deadlocks)
   Many tasks run by the WorkerPool will take other locks,
   such as the ctrlConfLock/stltConfLock or the nodesMapLock/rscDfnMapLock/etc.,
   therefore a task holding one of those locks must not queue tasks
   in the WorkerPool.

2. reconfigurationLock (ReadWriteLock)

3. Controller: ctrlConfLock (ReadWriteLock)
   Satellite:  stltConfLock (ReadWriteLock)

4. CommonMessageProcessor.apiLock (ReadWriteLock)

5. nodesMapLock (ReadWriteLock)
   Must be held in reader mode while performing lookups in nodesMap,
   or while iterating over nodesMap items.
   Must be held in writer mode while modifying the nodesMap.

6. rscDfnMapLock (ReadWriteLock)
   Must be held in reader mode while performing lookups in rscDfnMap,
   or while iterating over rscDfnMap items.
   Must be held in writer mode while modifying the rscDfnMap.

7. storPoolDfnMapLock (ReadWriteLock)
   Must be held in reader mode while performing lookups in storPoolDfnMap,
   or while iterating over storPoolDfnMap items.
   Must be held in writer mode while modifying the storPoolDfnMap.

8. kvsLock (ReadWriteLock)
   Must be held in reader mode while performing lookups in kvsMap,
   or while iterating over kvsMap items.
   Must be held in writer mode while modifying the kvsMap.

9. rscGrpMapLock (ReadWriteLock
   Must be held in reader mode while performing lookups in rscGrpMap,
   or while iterating over rscGrpMap items.
   Must be held in writer mode while modifying the rscGrpMap.

10. Node (class Object internal mutex)

11. ResourceDefinition (class Object internal mutex)

12. ResourceDefinition.volList (class Object internal mutex)

13. ResourceDefinition.connList (class Object internal mutex)

14. VolumeDefinition (class Object internal mutex)

15. Resource (class Object internal mutex)

16. Volume (class Object internal mutex)

17. CoreTimer (class Object internal mutex)

18. Peer#getSatelliteStateLock (ReadWriteLock)
