[lvm-devel] master - dev-cache: also add dev name for device found in sysfs only

Peter Rajnoha prajnoha at fedoraproject.org
Fri Apr 1 12:51:23 UTC 2016


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=7ed5a65ee5ccb92de388977cff0dc697045ffc09
Commit:        7ed5a65ee5ccb92de388977cff0dc697045ffc09
Parent:        91d32f9d1ba1ff3bed0f47104721e97960df3878
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Fri Apr 1 10:09:03 2016 +0200
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Fri Apr 1 14:48:56 2016 +0200

dev-cache: also add dev name for device found in sysfs only

For the case when we print device name associated with struct device
that was not found in /dev, but in sysfs, for example when printing
devices where LV device mismatch is found.
---
 lib/device/dev-cache.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c
index 12dcceb..27540d9 100644
--- a/lib/device/dev-cache.c
+++ b/lib/device/dev-cache.c
@@ -433,11 +433,29 @@ static struct dm_list *_get_or_add_list_by_index_key(struct dm_hash_table *idx,
 
 static struct device *_insert_sysfs_dev(dev_t devno, const char *devname)
 {
+	char path[PATH_MAX];
+	char *path_copy;
 	struct device *dev;
 
+	if (dm_snprintf(path, sizeof(path), "%s%s", _cache.dev_dir, devname) < 0) {
+		log_error("_insert_sysfs_dev: %s: dm_snprintf failed", devname);
+		return NULL;
+	}
+
 	if (!(dev = _dev_create(devno)))
 		return_NULL;
 
+	if (!(path_copy = dm_pool_strdup(_cache.mem, path))) {
+		log_error("_insert_sysfs_dev: %s: dm_pool_strdup failed", devname);
+		return NULL;
+	}
+
+	if (!_add_alias(dev, path_copy)) {
+		log_error("Couldn't add alias to dev cache.");
+		_free(dev);
+		return NULL;
+	}
+
 	if (!btree_insert(_cache.sysfs_only_devices, (uint32_t) devno, dev)) {
 		log_error("Couldn't add device to binary tree of sysfs-only devices in dev cache.");
 		_free(dev);




More information about the lvm-devel mailing list