From 0c3d8182c997c979c7a0ccce88d9fc48638261a5 Mon Sep 17 00:00:00 2001
From: Yu Watanabe <watanabe.yu+github@gmail.com>
Date: Fri, 25 Mar 2022 02:39:55 +0900
Subject: [PATCH] udev: store action in struct Event
 
Reference:https://github.com/systemd/systemd/commit/0c3d8182c997c979c7a0ccce88d9fc48638261a5
Conflict:NA
 
---
 src/udev/udevd.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
 
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index 53728c9f7971..d153b03a38e1 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -125,6 +125,7 @@ typedef struct Event {
 
         sd_device *dev;
 
+        sd_device_action_t action;
         uint64_t seqnum;
         uint64_t blocker_seqnum;
 
@@ -964,16 +965,12 @@ static int event_queue_start(Manager *manager) {
                 r = event_is_blocked(event);
                 if (r > 0)
                         continue;
-                if (r < 0) {
-                        sd_device_action_t a = _SD_DEVICE_ACTION_INVALID;
-
-                        (void) sd_device_get_action(event->dev, &a);
+                if (r < 0)
                         log_device_warning_errno(event->dev, r,
                                                  "Failed to check dependencies for event (SEQNUM=%"PRIu64", ACTION=%s), "
                                                  "assuming there is no blocking event, ignoring: %m",
                                                  event->seqnum,
-                                                 strna(device_action_to_string(a)));
-                }
+                                                 strna(device_action_to_string(event->action)));
 
                 r = event_run(event);
                 if (r <= 0) /* 0 means there are no idle workers. Let's escape from the loop. */
@@ -984,6 +981,7 @@ static int event_queue_start(Manager *manager) {
 }
 
 static int event_queue_insert(Manager *manager, sd_device *dev) {
+        sd_device_action_t action;
         uint64_t seqnum;
         Event *event;
         int r;
@@ -999,6 +997,10 @@ static int event_queue_insert(Manager *manager, sd_device *dev) {
         if (r < 0)
                 return r;
 
+        r = sd_device_get_action(dev, &action);
+        if (r < 0)
+                return r;
+
         event = new(Event, 1);
         if (!event)
                 return -ENOMEM;
@@ -1007,6 +1009,7 @@ static int event_queue_insert(Manager *manager, sd_device *dev) {
                 .manager = manager,
                 .dev = sd_device_ref(dev),
                 .seqnum = seqnum,
+                .action = action,
                 .state = EVENT_QUEUED,
         };
 
 
