mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
udev: call udev_watch_end() before udev_event_execute_rules()
No functional change, just refactoring.
This commit is contained in:
@@ -169,7 +169,7 @@ static int run(int argc, char *argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
udev_event_execute_rules(event, -1, 3 * USEC_PER_SEC, SIGKILL, NULL, rules);
|
||||
udev_event_execute_rules(event, 3 * USEC_PER_SEC, SIGKILL, NULL, rules);
|
||||
udev_event_execute_run(event, 3 * USEC_PER_SEC, SIGKILL);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#include "udev-node.h"
|
||||
#include "udev-trace.h"
|
||||
#include "udev-util.h"
|
||||
#include "udev-watch.h"
|
||||
#include "user-util.h"
|
||||
|
||||
UdevEvent *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_netlink *rtnl, int log_level) {
|
||||
@@ -278,7 +277,6 @@ static int update_devnode(UdevEvent *event) {
|
||||
|
||||
static int event_execute_rules_on_remove(
|
||||
UdevEvent *event,
|
||||
int inotify_fd,
|
||||
usec_t timeout_usec,
|
||||
int timeout_signal,
|
||||
Hashmap *properties_list,
|
||||
@@ -299,10 +297,6 @@ static int event_execute_rules_on_remove(
|
||||
if (r < 0)
|
||||
log_device_debug_errno(dev, r, "Failed to delete database under /run/udev/data/, ignoring: %m");
|
||||
|
||||
r = udev_watch_end(inotify_fd, dev);
|
||||
if (r < 0)
|
||||
log_device_warning_errno(dev, r, "Failed to remove inotify watch, ignoring: %m");
|
||||
|
||||
r = udev_rules_apply_to_event(rules, event, timeout_usec, timeout_signal, properties_list);
|
||||
|
||||
if (sd_device_get_devnum(dev, NULL) >= 0)
|
||||
@@ -330,7 +324,6 @@ static int copy_all_tags(sd_device *d, sd_device *s) {
|
||||
|
||||
int udev_event_execute_rules(
|
||||
UdevEvent *event,
|
||||
int inotify_fd, /* This may be negative */
|
||||
usec_t timeout_usec,
|
||||
int timeout_signal,
|
||||
Hashmap *properties_list,
|
||||
@@ -348,12 +341,7 @@ int udev_event_execute_rules(
|
||||
return log_device_error_errno(dev, r, "Failed to get ACTION: %m");
|
||||
|
||||
if (action == SD_DEVICE_REMOVE)
|
||||
return event_execute_rules_on_remove(event, inotify_fd, timeout_usec, timeout_signal, properties_list, rules);
|
||||
|
||||
/* Disable watch during event processing. */
|
||||
r = udev_watch_end(inotify_fd, dev);
|
||||
if (r < 0)
|
||||
log_device_warning_errno(dev, r, "Failed to remove inotify watch, ignoring: %m");
|
||||
return event_execute_rules_on_remove(event, timeout_usec, timeout_signal, properties_list, rules);
|
||||
|
||||
r = device_clone_with_db(dev, &event->dev_db_clone);
|
||||
if (r < 0)
|
||||
|
||||
@@ -53,7 +53,6 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(UdevEvent*, udev_event_free);
|
||||
|
||||
int udev_event_execute_rules(
|
||||
UdevEvent *event,
|
||||
int inotify_fd,
|
||||
usec_t timeout_usec,
|
||||
int timeout_signal,
|
||||
Hashmap *properties_list,
|
||||
|
||||
@@ -232,12 +232,9 @@ int udev_watch_end(int inotify_fd, sd_device *dev) {
|
||||
_cleanup_close_ int dirfd = -EBADF;
|
||||
int wd, r;
|
||||
|
||||
assert(inotify_fd >= 0);
|
||||
assert(dev);
|
||||
|
||||
/* This may be called by 'udevadm test'. In that case, inotify_fd is not initialized. */
|
||||
if (inotify_fd < 0)
|
||||
return 0;
|
||||
|
||||
if (sd_device_get_devname(dev, NULL) < 0)
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -194,10 +194,14 @@ static int worker_process_device(UdevWorker *worker, sd_device *dev) {
|
||||
if (worker->blockdev_read_only)
|
||||
(void) worker_mark_block_device_read_only(dev);
|
||||
|
||||
/* Disable watch during event processing. */
|
||||
r = udev_watch_end(worker->inotify_fd, dev);
|
||||
if (r < 0)
|
||||
log_device_warning_errno(dev, r, "Failed to remove inotify watch, ignoring: %m");
|
||||
|
||||
/* apply rules, create node, symlinks */
|
||||
r = udev_event_execute_rules(
|
||||
udev_event,
|
||||
worker->inotify_fd,
|
||||
worker->timeout_usec,
|
||||
worker->timeout_signal,
|
||||
worker->properties,
|
||||
|
||||
@@ -129,7 +129,7 @@ int test_main(int argc, char *argv[], void *userdata) {
|
||||
assert_se(sigfillset(&mask) >= 0);
|
||||
assert_se(sigprocmask(SIG_SETMASK, &mask, &sigmask_orig) >= 0);
|
||||
|
||||
udev_event_execute_rules(event, -1, 60 * USEC_PER_SEC, SIGKILL, NULL, rules);
|
||||
udev_event_execute_rules(event, 60 * USEC_PER_SEC, SIGKILL, NULL, rules);
|
||||
|
||||
FOREACH_DEVICE_PROPERTY(dev, key, value)
|
||||
printf("%s=%s\n", key, value);
|
||||
|
||||
Reference in New Issue
Block a user