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

Erik Skultety posted 6 patches 6 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1507732721.git.eskultet@redhat.com
There is a newer version of this series
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(-)
[libvirt] [PATCH v5 0/6] Work around the kernel mdev uevent race in nodedev
Posted by Erik Skultety 6 years, 6 months ago
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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list