]> sourceware.org Git - lvm2.git/commitdiff
dev-cache: also add dev name for device found in sysfs only
authorPeter Rajnoha <prajnoha@redhat.com>
Fri, 1 Apr 2016 08:09:03 +0000 (10:09 +0200)
committerPeter Rajnoha <prajnoha@redhat.com>
Fri, 1 Apr 2016 12:48:56 +0000 (14:48 +0200)
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

index 12dccebc281c916bc79e9885a63750dbeca87451..27540d968413f1252e58164706b05e5b4a39e37e 100644 (file)
@@ -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);
This page took 0.037528 seconds and 5 git commands to generate.