What git changeset does this queue apply against?
I'm having a heck of a time getting it to apply cleanly with git-am.
alternately:
I know you work on occasion with mercurial. Is this an mq tree somewhere?
Daniel P. Berrange wrote on 11/30/2008 06:14 PM:
The following huge series of patches adds thread safety for the
libvirtd
daemon and drivers, and makes the daemon multi-threaded in processing
RPC calls. This enables multiple clients to be processed in parallel,
without blocking each other. It does not change the thread rules for the
virConnectPtr object though, so each individual client is still serialized.
There are two core places where we have to have synchronization in the
threading model this patch series introduces
- The libvirt daemon code
- A single global server lock (aka struct qemud_server)
- One lock per client connection (aka struct qemud_client)
- The driver implementations
- One lock per driver (aka QEMU, LXC, Test, UML, OpenVZ, Network,
Storage, Node Devices)
- One lock per primary object in a driver (virDomainObjPtr,
virNetworkObjPtr, virStoragePoolObjPtr, virNodeDeviceObjptr
instances)
For most cases, the big global server / driver locks are only held while
obtaining one of the finer grained locks. This gives a fairly good level
of concurrency for operations touching different objects. Once this core
infrastructure is merged, it will be possible to iterate on impl of
drivers to reduce the time locks are held - eg avoid holding a lock while
talking to the QEMU monitor interface.
To try and make it easier to spot thread locking problems this series
refactors alot of methods so that there is only a single return point
where the unlock call can be placed, rather than multiple return point
which increases the chances of missing an unlock call.
This touches a huge amount of code, so I'd like to get this all merged
ASAP as it'll be really hard to keep it synced with ongoing changes.
Daniel