X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fudev.c;h=a5d9e03006dd2af346a1418296526a47aece88ca;hp=798d744873ef049117323dcead7e989650102ae3;hb=7d830eb98a012c5724cdd4ed828b039ba5f788b6;hpb=6bc7131642e7197d99430c1ccb9d7bbed56c30bc diff --git a/discover/udev.c b/discover/udev.c index 798d744..a5d9e03 100644 --- a/discover/udev.c +++ b/discover/udev.c @@ -1,17 +1,18 @@ #define _GNU_SOURCE -#include +#include #include +#include +#include #include -#include -#include #include +#include #include +#include #include #include -#include #include "event.h" #include "udev.h" @@ -54,6 +55,7 @@ static void udev_handle_message(struct udev *udev, char *buf, int len) { int result; struct event *event; + const char *devpath; event = talloc(udev, struct event); event->type = EVENT_TYPE_UDEV; @@ -66,7 +68,17 @@ static void udev_handle_message(struct udev *udev, char *buf, int len) return; udev_print_event(event); - device_handler_event(udev->handler, event); + + /* Ignore ram, loop, and devices with no DEVNAME. */ + + devpath = event_get_param(event, "DEVPATH"); + + if (event_get_param(event, "DEVNAME") + && !strstr(devpath, "virtual/block/loop") + && !strstr(devpath, "virtual/block/ram")) { + device_handler_event(udev->handler, event); + } + talloc_free(event); return; @@ -122,6 +134,7 @@ struct udev *udev_init(struct device_handler *handler) talloc_set_destructor(udev, udev_destructor); + memset(&addr, 0, sizeof addr); addr.sun_family = AF_UNIX; strcpy(addr.sun_path, PBOOT_DEVICE_SOCKET);