[dm-devel] [PATCH 00/14] Rework uevent filtering and merging

Benjamin Marzinski bmarzins at redhat.com
Sat Apr 2 03:49:48 UTC 2022


 On Thu, Mar 31, 2022 at 12:14:56AM +0200, mwilck at suse.com wrote:
> Hi Ben, hi Christophe, hi Tang Junhui,
> 
> the bulk of this patch set (3-8) is a rework of the uevent filtering and
> merging logic introduced in commit ee8888f ("multipath-tools: improve 
> processing efficiency for addition and deletion of multipath devices"),
> by Tang Junhui.
> 
> The rationale is explained in detail in the commit message in patch 08/14.
> TL;DR: The previous approach delayed uevent handling, possibly a lot, which
> is often undesirable. The new logic passes events to the dispatcher
> immediately, but if they queue up (because the dispatcher can't keep
> up with the rate at which events arrive, or is blocked e.g. by the
> path checker), the dispatcher will apply filtering and merging
> between servicing individual events. This worked well in my own testing,
> but I'd appreciate if ZTE could give it a shot in their special test
> environment.
> 
> Patch 9-14 add some more improvements to the uevent handling code, and
> improve logging. The first 2 patches are unrelated fixes.
> 
> Comments welcome,
> 
> Martin

For everything except 04, 05, and 06

Reviewed-by: Benjamin Marzinski <bmarzins at redhat.com>

BTW, for some reason, these emails didn't come through a plain test for
me.

> 
> Martin Wilck (14):
>   multipathd: allow adding git rev as version suffix
>   multipathd: don't switch to DAEMON_IDLE during startup
>   uevent_dispatch(): use while in wait loop
>   libmultipath: uevent_dispatch(): process uevents one by one
>   libmultipath: uevent_dispatch(): only filter/merge new uevents
>   multipathd: reconfigure: disallow changing uid_attrs
>   libmultipath: microoptimize uevent filtering and merging
>   libmultipath: uevent_listen(): don't delay uevents
>   libmultipath: uevent: use struct to pass parameters around
>   libmultipath: uevent: log statistics about filtering and merging
>   libmultipath: merge_uevq(): filter first, then merge
>   libmultipath: uevent_filter(): filter previously merged events
>   libmultipath: uevent: improve log messages
>   libmultipath: uevent: add debug messages for event queue
> 
>  Makefile.inc               |   3 +-
>  libmultipath/config.c      |   6 +-
>  libmultipath/config.h      |   4 +-
>  libmultipath/discovery.c   |   2 +-
>  libmultipath/list.h        |  53 +++++
>  libmultipath/structs.h     |   2 +-
>  libmultipath/uevent.c      | 407 ++++++++++++++++++++++---------------
>  libmultipath/uevent.h      |   3 +-
>  multipath/multipath.conf.5 |   2 +
>  multipathd/main.c          |  59 ++++--
>  tests/uevent.c             |   2 +-
>  11 files changed, 354 insertions(+), 189 deletions(-)
> 
> -- 
> 2.35.1


More information about the dm-devel mailing list