[libvirt] [PATCH v5 0/6] Work around the kernel mdev uevent race in nodedev

Erik Skultety eskultet at redhat.com
Wed Oct 11 14:52:35 UTC 2017

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(-)


More information about the libvir-list mailing list