[dm-devel] [PATCH 12/14] libmultipath: uevent_filter(): filter previously merged events
Benjamin Marzinski
bmarzins at redhat.com
Sat Apr 2 03:44:00 UTC 2022
On Thu, Mar 31, 2022 at 12:15:08AM +0200, mwilck at suse.com wrote:
> With the new list-appending logic, it can happen that previously
> merged events can now be filtered. Do it.
>
> Signed-off-by: Martin Wilck <mwilck at suse.com>
> ---
> libmultipath/uevent.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c
> index eb900ec..809c74c 100644
> --- a/libmultipath/uevent.c
> +++ b/libmultipath/uevent.c
> @@ -305,7 +305,7 @@ static void uevent_delete_from_list(struct uevent *to_delete,
> * for the anchor), "old_tail" must be moved. It can happen that
> * "old_tail" ends up pointing at the anchor.
> */
> - if (*old_tail == &to_delete->node)
> + if (old_tail && *old_tail == &to_delete->node)
> *old_tail = to_delete->node.prev;
>
> list_del_init(&to_delete->node);
> @@ -360,6 +360,20 @@ uevent_filter(struct uevent *later, struct uevent_filter_state *st)
> * filter unnessary earlier uevents
> * by the later uevent
> */
> + if (!list_empty(&earlier->merge_node)) {
> + struct uevent *mn, *t;
> +
> + list_for_each_entry_reverse_safe(mn, t, &earlier->merge_node, node) {
> + if (uevent_can_filter(mn, later)) {
> + condlog(4, "uevent: \"%s %s\" (merged into \"%s %s\") filtered by \"%s %s\"",
> + mn->action, mn->kernel,
> + earlier->action, earlier->kernel,
> + later->action, later->kernel);
> + uevent_delete_from_list(mn, &t, NULL);
Just like with 05/14, you could just use a much simpler delete function
here, since moving old_tail and merged nodes is unnecessary. I guess I
don't care that much, if you'd rather just have one function, so
Reviewed-by: Benjamin Marzinski <bmarzins at redhat.com>
> + st->filtered++;
> + }
> + }
> + }
> if (uevent_can_filter(earlier, later)) {
> condlog(3, "uevent: %s-%s has filtered by uevent: %s-%s",
> earlier->kernel, earlier->action,
> --
> 2.35.1
More information about the dm-devel
mailing list