diff --git a/src/util/virdevmapper.c b/src/util/virdevmapper.c index feb5982315..79dbc3d02a 100644 --- a/src/util/virdevmapper.c +++ b/src/util/virdevmapper.c @@ -64,6 +64,7 @@ virDevMapperGetTargetsImpl(const char *path, char ***devPaths_ret, unsigned int ttl) { + struct stat sb; struct dm_task *dmt = NULL; struct dm_deps *deps; struct dm_info info; @@ -82,6 +83,15 @@ virDevMapperGetTargetsImpl(const char *path, return ret; } + if (stat(path, &sb) < 0) { + if (errno == ENOENT) + return 0; + return -1; + } + + if (!dm_is_dm_major(major(sb.st_dev))) + return 0; + if (!(dmt = dm_task_create(DM_DEVICE_DEPS))) { if (errno == ENOENT || errno == ENODEV) { /* It's okay. Kernel is probably built without