summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2020-06-11 12:43:07 -0500
committerDavid Teigland <teigland@redhat.com>2020-06-11 12:43:07 -0500
commit9fbad5bb0fdc7d9a9dca8539e4cd217c5ef1fede (patch)
treee527841813b1850ab355e86fe2bad4989d92a258
parent6ea3654868e3727b9197113f973e1c7edeed38b2 (diff)
downloadlvm2-9fbad5bb0fdc7d9a9dca8539e4cd217c5ef1fede.tar.gz
fix libblkid BLOCK_SIZE check
-rw-r--r--lib/device/dev-type.c36
1 files changed, 12 insertions, 24 deletions
diff --git a/lib/device/dev-type.c b/lib/device/dev-type.c
index deb5d6a0f..e3fa9babb 100644
--- a/lib/device/dev-type.c
+++ b/lib/device/dev-type.c
@@ -649,37 +649,25 @@ out:
#ifdef BLKID_WIPING_SUPPORT
int get_fs_block_size(struct device *dev, uint32_t *fs_block_size)
{
- blkid_probe probe = NULL;
- const char *block_size_str = NULL;
+ char *block_size_str = NULL;
uint64_t block_size_val;
- int r = 0;
- *fs_block_size = 0;
-
- if (!(probe = blkid_new_probe_from_filename(dev_name(dev)))) {
- log_error("Failed to create a new blkid probe for device %s.", dev_name(dev));
- goto out;
+ if ((block_size_str = blkid_get_tag_value(NULL, "BLOCK_SIZE", dev_name(dev)))) {
+ block_size_val = strtoull(block_size_str, NULL, 10);
+ *fs_block_size = (uint32_t)block_size_val;
+ free(block_size_str);
+ log_debug("Found blkid BLOCK_SIZE %u for fs on %s", *fs_block_size, dev_name(dev));
+ return 1;
+ } else {
+ log_debug("No blkid BLOCK_SIZE for fs on %s", dev_name(dev));
+ *fs_block_size = 0;
+ return 0;
}
-
- blkid_probe_enable_partitions(probe, 1);
-
- (void) blkid_probe_lookup_value(probe, "BLOCK_SIZE", &block_size_str, NULL);
-
- if (!block_size_str)
- goto out;
-
- block_size_val = strtoull(block_size_str, NULL, 10);
-
- *fs_block_size = (uint32_t)block_size_val;
- r = 1;
-out:
- if (probe)
- blkid_free_probe(probe);
- return r;
}
#else
int get_fs_block_size(struct device *dev, uint32_t *fs_block_size)
{
+ log_debug("Disabled blkid BLOCK_SIZE for fs.");
*fs_block_size = 0;
return 0;
}