+static int udev_handle_dev_add(struct pb_udev *udev, struct udev_device *dev)
+{
+ const char *subsys;
+ const char *name;
+
+ name = udev_device_get_sysname(dev);
+ if (!name) {
+ pb_debug("udev_device_get_sysname failed\n");
+ return -1;
+ }
+
+ subsys = udev_device_get_subsystem(dev);
+ if (!subsys) {
+ pb_debug("udev_device_get_subsystem failed\n");
+ return -1;
+ }
+
+ if (device_lookup_by_id(udev->handler, name)) {
+ pb_debug("device %s is already present?\n", name);
+ return -1;
+ }
+
+ if (!strcmp(subsys, "block")) {
+ return udev_handle_block_add(udev, dev, name);
+ }
+
+ pb_debug("SKIP %s: unknown subsystem %s\n", name, subsys);
+ return -1;
+}
+
+