v4:
https://www.redhat.com/archives/libvir-list/2017-September/msg00532.html
Since v4:
- fixed the reviewer's notes in 1/7
- dropped the original 2/7 because of converting the udev private data into a
lockable object
- current 2/6 is a new patch reworking our current locking approach of the udev
private data where we only relied on the driver global lock, after this patch,
private data are going to be a self-lockable object
- dropped the event counting from 4/7, the thread now reads everything it can
until it gets EAGAIN/EWOULDBLOCK from libudev, which renders
enablement/disablement of event loop fd polling unnecessary
-> other minor adjustments raised during review
-> dropped our udev fd sanity check from the worker thread, since the
thread will encounter a libudev error sooner or later, so the sanity check
inside the worker thread wouldn't really make a difference
Erik Skultety (6):
nodedev: Introduce udevEventMonitorSanityCheck helper function (ACKed)
nodedev: udev: Convert udev private data to a lockable object (NEW)
udev: Split udevEventHandleCallback in two functions (2/6 necessary changes)
udev: Convert udevEventHandleThread to an actual thread routine (reworked)
util: Introduce virFileWaitForExists (unchanged && ACKed)
nodedev: Work around the uevent race by hooking up
virFileWaitForAccess (unchanged && ACKed)
src/libvirt_private.syms | 1 +
src/node_device/node_device_udev.c | 281 ++++++++++++++++++++++++++++---------
src/node_device/node_device_udev.h | 3 -
src/util/virfile.c | 31 ++++
src/util/virfile.h | 2 +
5 files changed, 249 insertions(+), 69 deletions(-)
--
2.13.6