summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2020-05-13 15:47:20 -0500
committerDavid Teigland <teigland@redhat.com>2020-05-13 16:26:26 -0500
commit2f29765e7fd1135d070310683cf486f07d041c81 (patch)
treefc881971e3411d9c501067d26700669d760c29f8
parent2d1fe38d84d499011d13ae1ea11535398528fc87 (diff)
downloadlvm2-2f29765e7fd1135d070310683cf486f07d041c81.tar.gz
devs: add some checks for a dev with no path name
It's possible for a dev-cache entry to remain after all paths for it have been removed, and other parts of the code expect that a dev always has a name. A better fix may be to remove a device from dev-cache after all paths to it have been removed.
-rw-r--r--lib/device/dev-io.c3
-rw-r--r--lib/label/hints.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c
index 735441f19..33b9345ee 100644
--- a/lib/device/dev-io.c
+++ b/lib/device/dev-io.c
@@ -86,6 +86,9 @@ static int _dev_get_size_dev(struct device *dev, uint64_t *size)
int fd = dev->bcache_fd;
int do_close = 0;
+ if (dm_list_empty(&dev->aliases))
+ return 0;
+
if (dev->size_seqno == _dev_size_seqno) {
log_very_verbose("%s: using cached size %" PRIu64 " sectors",
name, dev->size);
diff --git a/lib/label/hints.c b/lib/label/hints.c
index 48fb661b4..349d5aaef 100644
--- a/lib/label/hints.c
+++ b/lib/label/hints.c
@@ -419,6 +419,9 @@ static int _dev_in_hint_hash(struct cmd_context *cmd, struct device *dev)
{
uint64_t devsize = 0;
+ if (dm_list_empty(&dev->aliases))
+ return 0;
+
if (!cmd->filter->passes_filter(cmd, cmd->filter, dev, "regex"))
return 0;