a guest Jun 19th, 2017 39 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- 11:48 < soren> Ok, so the problem is this:
- 11:48 < soren> Say there's a filter that's already active.
- 11:48 < soren> I want to change it, so I redefine it.
- 11:49 < soren> Because it's active, nwfilter wants to go apply the changes I made to all the running VM's.
- 11:49 < soren> It does so by calling qemudVMFilterRebuild.
- 11:50 < soren> qemudVMFilterRebuild acquires the global qemu driver lock (by calling qemuDriverLock(driver)).
- 11:50 < soren> ..and runs a callback for each VM known to the driver.
- 11:50 < soren> That's fine, and it works great.
- 11:51 < soren> Well, until you're starting another VM at about the same time.
- 11:51 < soren> If this other VM has a filter defined (any filter?) it calls into nwfilter to instantiate the filter.
- 11:52 < soren> ..but NWFilter's goFindMeTheFilterByName locks the filters as it goes through them, looking for one with the right name.
- 11:52 < soren> ..but the lock is still held by the other nwfilter thread trying to apply my changes..
- 11:52 < soren> ..and that isn't going to finish until it can apply them to the QEmu domains..
RAW Paste Data