+ /* we may also see multipath devices; same dev nodes (hence id), but
+ * different serial numbers */
+ serial = udev_device_get_property_value(dev, "ID_SERIAL");
+ if (serial && device_lookup_by_serial(udev->handler, serial))
+ return -1;
+
+ ddev = discover_device_create(udev->handler, name);
+
+ ddev->device_path = talloc_strdup(ddev, node);
+
+ prop = udev_device_get_property_value(dev, "ID_FS_UUID");
+ if (prop)
+ ddev->uuid = talloc_strdup(ddev, prop);
+ prop = udev_device_get_property_value(dev, "ID_FS_LABEL");
+ if (prop)
+ ddev->label = talloc_strdup(ddev, prop);
+ ddev->device->type = DEVICE_TYPE_DISK;
+
+ udev_setup_device_params(dev, ddev);
+
+ device_handler_discover(udev->handler, ddev);
+
+ return 0;
+}
+
+static int udev_handle_dev_remove(struct pb_udev *udev, struct udev_device *dev)
+{
+ struct discover_device *ddev;
+ const char *name;