diff options
author | David Teigland <teigland@redhat.com> | 2021-06-15 11:22:32 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2021-07-13 11:11:23 -0500 |
commit | deaf43d6f0341d8d15e8ff5ffd25d7e0a7d2092a (patch) | |
tree | a0bd63efaa0e089770e1577245e0d26099112e5e /lib | |
parent | 90485650931d3fc04d00c92a729050c8743969e5 (diff) | |
download | lvm2-deaf43d6f0341d8d15e8ff5ffd25d7e0a7d2092a.tar.gz |
filter-usable: remove udev dev size check
For the pv_min_size check, always use dev_get_size()
which is commonly used elsewhere, and don't bother
asking libudev for the device size when
external_device_info_source=udev.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/filters/filter-usable.c | 77 |
1 files changed, 4 insertions, 73 deletions
diff --git a/lib/filters/filter-usable.c b/lib/filters/filter-usable.c index 43a37afd0..062fb6c74 100644 --- a/lib/filters/filter-usable.c +++ b/lib/filters/filter-usable.c @@ -16,10 +16,6 @@ #include "lib/misc/lib.h" #include "lib/filters/filter.h" #include "lib/activate/activate.h" -#ifdef UDEV_SYNC_SUPPORT -#include <libudev.h> -#include "lib/device/dev-ext-udev-constants.h" -#endif struct filter_data { filter_mode_t mode; @@ -28,7 +24,7 @@ struct filter_data { static const char *_too_small_to_hold_pv_msg = "Too small to hold a PV"; -static int _native_check_pv_min_size(struct device *dev) +static int _check_pv_min_size(struct device *dev) { uint64_t size; int ret = 0; @@ -50,61 +46,6 @@ out: return ret; } -#ifdef UDEV_SYNC_SUPPORT -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; -} -#else -static int _udev_check_pv_min_size(struct device *dev) -{ - return 1; -} -#endif - -static int _check_pv_min_size(struct device *dev) -{ - if (dev->ext.src == DEV_EXT_NONE) - return _native_check_pv_min_size(dev); - - if (dev->ext.src == DEV_EXT_UDEV) - return _udev_check_pv_min_size(dev); - - log_error(INTERNAL_ERROR "Missing hook for PV min size check " - "using external device info source %s", dev_ext_name(dev)); - - return 0; -} - static int _passes_usable_filter(struct cmd_context *cmd, struct dev_filter *f, struct device *dev, const char *use_filter_name) { struct filter_data *data = f->private; @@ -156,19 +97,9 @@ static int _passes_usable_filter(struct cmd_context *cmd, struct dev_filter *f, } if (r) { - /* check if the device is not too small to hold a PV */ - switch (mode) { - case FILTER_MODE_NO_LVMETAD: - /* fall through */ - case FILTER_MODE_PRE_LVMETAD: - r = _check_pv_min_size(dev); - if (!r) - dev->filtered_flags |= DEV_FILTERED_MINSIZE; - break; - case FILTER_MODE_POST_LVMETAD: - /* nothing to do here */ - break; - } + r = _check_pv_min_size(dev); + if (!r) + dev->filtered_flags |= DEV_FILTERED_MINSIZE; } return r; |