journal: replace udev_device by sd_device

This commit is contained in:
Yu Watanabe 2018-08-22 14:04:11 +09:00
parent ad5944d71c
commit 8bebb09ce7
4 changed files with 31 additions and 55 deletions

View file

@ -22,6 +22,7 @@
#endif
#include "sd-bus.h"
#include "sd-device.h"
#include "sd-journal.h"
#include "acl-util.h"
@ -30,6 +31,7 @@
#include "bus-util.h"
#include "catalog.h"
#include "chattr-util.h"
#include "device-private.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
@ -57,8 +59,6 @@
#include "strv.h"
#include "syslog-util.h"
#include "terminal-util.h"
#include "udev-util.h"
#include "udev.h"
#include "unit-name.h"
#include "user-util.h"
@ -177,9 +177,8 @@ typedef struct BootId {
} BootId;
static int add_matches_for_device(sd_journal *j, const char *devpath) {
_cleanup_(udev_unrefp) struct udev *udev = NULL;
_cleanup_(udev_device_unrefp) struct udev_device *device = NULL;
struct udev_device *d = NULL;
_cleanup_(sd_device_unrefp) sd_device *device = NULL;
sd_device *d = NULL;
struct stat st;
int r;
@ -191,33 +190,25 @@ static int add_matches_for_device(sd_journal *j, const char *devpath) {
return -EINVAL;
}
udev = udev_new();
if (!udev)
return log_oom();
if (stat(devpath, &st) < 0)
return log_error_errno(errno, "Couldn't stat file: %m");
r = udev_device_new_from_stat_rdev(udev, &st, &device);
r = device_new_from_stat_rdev(&device, &st);
if (r < 0)
return log_error_errno(r, "Failed to get udev device from devnum %u:%u: %m", major(st.st_rdev), minor(st.st_rdev));
return log_error_errno(r, "Failed to get device from devnum %u:%u: %m", major(st.st_rdev), minor(st.st_rdev));
d = device;
while (d) {
for (d = device; d; ) {
_cleanup_free_ char *match = NULL;
const char *subsys, *sysname, *devnode;
sd_device *parent;
subsys = udev_device_get_subsystem(d);
if (!subsys) {
d = udev_device_get_parent(d);
continue;
}
r = sd_device_get_subsystem(d, &subsys);
if (r < 0)
goto get_parent;
sysname = udev_device_get_sysname(d);
if (!sysname) {
d = udev_device_get_parent(d);
continue;
}
r = sd_device_get_sysname(d, &sysname);
if (r < 0)
goto get_parent;
match = strjoin("_KERNEL_DEVICE=+", subsys, ":", sysname);
if (!match)
@ -227,8 +218,7 @@ static int add_matches_for_device(sd_journal *j, const char *devpath) {
if (r < 0)
return log_error_errno(r, "Failed to add match: %m");
devnode = udev_device_get_devnode(d);
if (devnode) {
if (sd_device_get_devname(d, &devnode) >= 0) {
_cleanup_free_ char *match1 = NULL;
r = stat(devnode, &st);
@ -244,7 +234,11 @@ static int add_matches_for_device(sd_journal *j, const char *devpath) {
return log_error_errno(r, "Failed to add match: %m");
}
d = udev_device_get_parent(d);
get_parent:
if (sd_device_get_parent(d, &parent) < 0)
break;
d = parent;
}
r = add_match_this_boot(j, arg_machine);

View file

@ -6,10 +6,11 @@
#include <sys/socket.h>
#include <unistd.h>
#include "libudev.h"
#include "sd-device.h"
#include "sd-messages.h"
#include "alloc-util.h"
#include "device-util.h"
#include "escape.h"
#include "fd-util.h"
#include "format-util.h"
@ -209,16 +210,13 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) {
}
if (kernel_device) {
struct udev_device *ud;
_cleanup_(sd_device_unrefp) sd_device *d = NULL;
ud = udev_device_new_from_device_id(s->udev, kernel_device);
if (ud) {
if (sd_device_new_from_device_id(&d, kernel_device) >= 0) {
const char *g;
struct udev_list_entry *ll;
char *b;
g = udev_device_get_devnode(ud);
if (g) {
if (sd_device_get_devname(d, &g) >= 0) {
b = strappend("_UDEV_DEVNODE=", g);
if (b) {
iovec[n++] = IOVEC_MAKE_STRING(b);
@ -226,8 +224,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) {
}
}
g = udev_device_get_sysname(ud);
if (g) {
if (sd_device_get_sysname(d, &g) >= 0) {
b = strappend("_UDEV_SYSNAME=", g);
if (b) {
iovec[n++] = IOVEC_MAKE_STRING(b);
@ -236,25 +233,19 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) {
}
j = 0;
ll = udev_device_get_devlinks_list_entry(ud);
udev_list_entry_foreach(ll, ll) {
FOREACH_DEVICE_DEVLINK(d, g) {
if (j > N_IOVEC_UDEV_FIELDS)
break;
g = udev_list_entry_get_name(ll);
if (g) {
b = strappend("_UDEV_DEVLINK=", g);
if (b) {
iovec[n++] = IOVEC_MAKE_STRING(b);
z++;
}
b = strappend("_UDEV_DEVLINK=", g);
if (b) {
iovec[n++] = IOVEC_MAKE_STRING(b);
z++;
}
j++;
}
udev_device_unref(ud);
}
}

View file

@ -9,7 +9,6 @@
#include <sys/statvfs.h>
#include <linux/sockios.h>
#include "libudev.h"
#include "sd-daemon.h"
#include "sd-journal.h"
#include "sd-messages.h"
@ -1845,10 +1844,6 @@ int server_init(Server *s) {
if (r < 0)
return r;
s->udev = udev_new();
if (!s->udev)
return -ENOMEM;
s->rate_limit = journal_rate_limit_new(s->rate_limit_interval, s->rate_limit_burst);
if (!s->rate_limit)
return -ENOMEM;
@ -1949,8 +1944,6 @@ void server_done(Server *s) {
if (s->mmap)
mmap_cache_unref(s->mmap);
udev_unref(s->udev);
}
static const char* const storage_table[_STORAGE_MAX] = {

View file

@ -137,8 +137,6 @@ struct Server {
Set *deferred_closes;
struct udev *udev;
uint64_t *kernel_seqnum;
bool dev_kmsg_readable:1;