Along the way we observed many problems with current approach to event handling in mdmonitor. It frequently doesn't report Fail and DeviceDisappeared events. It's due to time races with udev, and too long delay in some cases. While there was a patch intending to address time races with udev, it didn't remove them completely. This patch series presents alternative approach, where mdmonitor wakes up on udev events, so that there should be no more conflicts with udev we saw before. Additionally some code quality improvements were done, to make the code more maintainable. v2: Fixed mismatched comment style and rebased onto master. Mateusz Grzonka (8): Mdmonitor: Make alert_info global Mdmonitor: Pass events to alert() using enums instead of strings Mdmonitor: Add helper functions Add helpers to determine whether directories or files are soft links Mdmonitor: Refactor write_autorebuild_pid() Mdmonitor: Refactor check_one_sharer() for better error handling Mdmonitor: Improve udev event handling udev: Move udev_block() and udev_unblock() into udev.c Create.c | 1 + Makefile | 3 +- Manage.c | 3 +- Monitor.c | 623 +++++++++++++++++++++++++++++++++--------------------- lib.c | 42 ---- mdadm.h | 5 +- mdopen.c | 19 +- udev.c | 191 +++++++++++++++++ udev.h | 38 ++++ util.c | 45 ++++ 10 files changed, 668 insertions(+), 302 deletions(-) create mode 100644 udev.c create mode 100644 udev.h -- 2.26.2