*/
#include <stdio.h>
#include <string.h>
+#include <libudev.h>
#include "checkers.h"
#include "memory.h"
if (conf->dev)
FREE(conf->dev);
+ if (conf->udev)
+ udev_unref(conf->udev);
+
if (conf->udev_dir)
FREE(conf->udev_dir);
if (!conf->verbosity)
conf->verbosity = DEFAULT_VERBOSITY;
+ conf->udev = udev_new();
conf->dmrq = dm_drv_get_rq();
conf->dev_type = DEV_NONE;
conf->minio = DEFAULT_MINIO;
#include "debug.h"
#include "list.h"
#include "uevent.h"
+#include "vector.h"
+#include "config.h"
typedef int (uev_trigger)(struct uevent *, void * trigger_data);
int uevent_listen(void)
{
int err;
- struct udev *udev = NULL;
struct udev_monitor *monitor = NULL;
int fd, socket_flags;
int need_failback = 1;
pthread_cond_init(uev_condp, NULL);
pthread_cleanup_push(uevq_stop, NULL);
- udev = udev_new();
- if (!udev) {
- condlog(2, "failed to create udev context");
- goto out;
- }
- monitor = udev_monitor_new_from_netlink(udev, "udev");
+ monitor = udev_monitor_new_from_netlink(conf->udev, "udev");
if (!monitor) {
condlog(2, "failed to create udev monitor");
goto out;
out:
if (monitor)
udev_monitor_unref(monitor);
- if (udev)
- udev_unref(udev);
if (need_failback)
err = failback_listen();
pthread_cleanup_pop(1);