udev-node: drop unnecessary manager side cleaning up logic for stack directory

Unnecessary stack directories and their lock files are removed by
workers. Hence, the logic is not necessary anymore.
This commit is contained in:
Yu Watanabe
2024-10-12 05:34:07 +09:00
parent b364af59f0
commit ea4af553d8
4 changed files with 0 additions and 52 deletions
-8
View File
@@ -583,9 +583,6 @@ static int event_queue_start(Manager *manager) {
if (!manager->events || manager->exit || manager->stop_exec_queue)
return 0;
/* To make the stack directory /run/udev/links cleaned up later. */
manager->udev_node_needs_cleanup = true;
r = event_source_disable(manager->kill_workers_event);
if (r < 0)
log_warning_errno(r, "Failed to disable event source for cleaning up idle workers, ignoring: %m");
@@ -1181,11 +1178,6 @@ static int on_post(sd_event_source *s, void *userdata) {
/* There are no idle workers. */
if (manager->udev_node_needs_cleanup) {
(void) udev_node_cleanup();
manager->udev_node_needs_cleanup = false;
}
if (manager->exit)
return sd_event_exit(manager->event, 0);
-1
View File
@@ -44,7 +44,6 @@ typedef struct Manager {
int timeout_signal;
bool blockdev_read_only;
bool udev_node_needs_cleanup;
bool stop_exec_queue;
bool exit;
} Manager;
-42
View File
@@ -28,48 +28,6 @@
#define UDEV_NODE_HASH_KEY SD_ID128_MAKE(b9,6a,f1,ce,40,31,44,1a,9e,19,ec,8b,ae,f3,e3,2f)
int udev_node_cleanup(void) {
_cleanup_closedir_ DIR *dir = NULL;
/* This must not be called when any workers exist. It would cause a race between mkdir() called
* by stack_directory_lock() and unlinkat() called by this. */
dir = opendir("/run/udev/links");
if (!dir) {
if (errno == ENOENT)
return 0;
return log_debug_errno(errno, "Failed to open directory '/run/udev/links', ignoring: %m");
}
FOREACH_DIRENT_ALL(de, dir, break) {
_cleanup_free_ char *lockfile = NULL;
if (de->d_name[0] == '.')
continue;
if (de->d_type != DT_DIR)
continue;
/* As commented in the above, this is called when no worker exists, hence the file is not
* locked. On a later uevent, the lock file will be created if necessary. So, we can safely
* remove the file now. */
lockfile = path_join(de->d_name, ".lock");
if (!lockfile)
return log_oom_debug();
if (unlinkat(dirfd(dir), lockfile, 0) < 0 && errno != ENOENT) {
log_debug_errno(errno, "Failed to remove '/run/udev/links/%s', ignoring: %m", lockfile);
continue;
}
if (unlinkat(dirfd(dir), de->d_name, AT_REMOVEDIR) < 0 && errno != ENOTEMPTY)
log_debug_errno(errno, "Failed to remove '/run/udev/links/%s', ignoring: %m", de->d_name);
}
return 0;
}
static int node_remove_symlink(sd_device *dev, const char *slink) {
assert(dev);
assert(slink);
-1
View File
@@ -24,6 +24,5 @@ int static_node_apply_permissions(
int udev_node_remove(sd_device *dev);
int udev_node_update(sd_device *dev, sd_device *dev_old);
int udev_node_cleanup(void);
size_t udev_node_escape_path(const char *src, char *dest, size_t size);