static int _udev_check_pv_min_size(struct device *dev) { struct dev_ext *ext; const char *size_str; char *endp; uint64_t size; if (!(ext = dev_ext_get(dev))) return_0; if (!(size_str = udev_device_get_sysattr_value((struct udev_device *)ext->handle, DEV_EXT_UDEV_SYSFS_ATTR_SIZE))) { log_debug_devs("%s: Skipping: failed to get size from sysfs [%s:%p]", dev_name(dev), dev_ext_name(dev), dev->ext.handle); return 0; } errno = 0; size = strtoull(size_str, &endp, 10); if (errno || !endp || *endp) { log_debug_devs("%s: Skipping: failed to parse size from sysfs [%s:%p]", dev_name(dev), dev_ext_name(dev), dev->ext.handle); return 0; } if (size < pv_min_size()) { log_debug_devs("%s: Skipping: %s [%s:%p]", dev_name(dev), _too_small_to_hold_pv_msg, dev_ext_name(dev), dev->ext.handle); return 0; } return 1; }
static int _udev_dev_is_partitioned(struct device *dev) { struct dev_ext *ext; if (!(ext = dev_ext_get(dev))) return_0; if (!udev_device_get_property_value((struct udev_device *)ext->handle, DEV_EXT_UDEV_BLKID_PART_TABLE_TYPE)) return 0; if (udev_device_get_property_value((struct udev_device *)ext->handle, DEV_EXT_UDEV_BLKID_PART_ENTRY_DISK)) return 0; return 1; }