[lvm-devel] master - devs: add some checks for a dev with no path name

David Teigland teigland at sourceware.org
Wed May 13 22:27:23 UTC 2020


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=2f29765e7fd1135d070310683cf486f07d041c81
Commit:        2f29765e7fd1135d070310683cf486f07d041c81
Parent:        2d1fe38d84d499011d13ae1ea11535398528fc87
Author:        David Teigland <teigland at redhat.com>
AuthorDate:    Wed May 13 15:47:20 2020 -0500
Committer:     David Teigland <teigland at redhat.com>
CommitterDate: Wed May 13 16:26:26 2020 -0500

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.
---
 lib/device/dev-io.c | 3 +++
 lib/label/hints.c   | 3 +++
 2 files changed, 6 insertions(+)

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;
 




More information about the lvm-devel mailing list