- /* We have enough info to create the device and start discovery */
- ddev = device_lookup_by_id(udev->handler, name);
- if (ddev) {
- pb_debug("device %s is already present?\n", name);
- return -1;
+ /* Ignore any device mapper devices that aren't logical volumes */
+ devname = udev_device_get_property_value(dev, "DM_NAME");
+ if (devname && ! udev_device_get_property_value(dev, "DM_LV_NAME")) {
+ pb_debug("SKIP: dm-device %s\n", devname);
+ return 0;
+ }
+
+ type = udev_device_get_property_value(dev, "ID_FS_TYPE");
+ if (!type) {
+ pb_log("SKIP: %s: no ID_FS_TYPE property\n", name);
+ return 0;
+ }
+
+ while (ignored_types[i]) {
+ if (!strncmp(type, ignored_types[i], strlen(ignored_types[i]))) {
+ pb_log("SKIP: %s: ignore '%s' filesystem\n", name, type);
+ return 0;
+ }
+ i++;
+ }
+
+ /* Search for LVM logical volumes if we see an LVM member */
+ if (strncmp(type, "LVM2_member", strlen("LVM2_member")) == 0) {
+ lvm_vg_search(udev->handler);
+ return 0;