multipathd is multi-threaded, but it uses a single lock that essentially kills most benefits of the additional threads. Also, it busy-waits or sleeps in various places, in part with locks held, which is of course very bad for a program with lots of asynchronous things going on.
Goal for this Hackweek
Eliminate busy-waiting. Assess which of the various threads are actually necessary. Rework the path checker to be truly asynchronous. Also, re-think configuration changes (reconfigure). Currently this works with user-space RCU, but I believe that's not optimal. It's dangerous to continue servicing uevents and path checkers while a configuration change is pending.
No Hackers yet
This project is part of:
Hack Week 20