From: Michal Sekletar Date: Thu, 4 Mar 2021 16:35:22 +0000 (+0100) Subject: udev: run link_update() with increased retry count in second invocation X-Git-Tag: v248-rc3~45 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=996c83903da5bf8b371314b4207ff97afeef65a4;p=thirdparty%2Fsystemd.git udev: run link_update() with increased retry count in second invocation In PR #17431 we have introduced retry loop in link_update() in order to maximize the chance that we end up with correct target when there are multiple contenders for given symlink. Number of iterations in retry loop is either 1 or LINK_UPDATE_MAX_RETRIES, depending on the value of 'initialized' db flag. When device appears for the first time we need to set the flag before calling link_update() via update_devnode() for the second time to make sure we run the second invocation with higher retry loop counter. --- diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index d5d89d6802f..12597194a91 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -1043,6 +1043,8 @@ int udev_event_execute_rules(UdevEvent *event, if (r < 0) return log_device_debug_errno(dev, r, "Failed to update database under /run/udev/data/: %m"); + device_set_is_initialized(dev); + /* Yes, we run update_devnode() twice, because in the first invocation, that is before update of udev database, * it could happen that two contenders are replacing each other's symlink. Hence we run it again to make sure * symlinks point to devices that claim them with the highest priority. */ @@ -1050,8 +1052,6 @@ int udev_event_execute_rules(UdevEvent *event, if (r < 0) return r; - device_set_is_initialized(dev); - return 0; }