For virStorageBackendStablePath, in order to make decisions in other code
split out the checks regarding whether the pool's target is empty, using /dev,
using /dev/, or doesn't start with /dev
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/storage/storage_backend.c | 26 +++++++++++++-------------
src/storage/storage_backend.h | 1 +
2 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index 0435983..b07e0d9 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -1674,6 +1674,17 @@ virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr target,
return 0;
}
+bool
+virStorageBackendPoolPathIsStable(const char *path)
+{
+ if (path == NULL || STREQ(path, "/dev") || STREQ(path, "/dev/"))
+ return false;
+
+ if (!STRPREFIX(path, "/dev"))
+ return false;
+
+ return true;
+}
/*
* Given a volume path directly in /dev/XXX, iterate over the
@@ -1703,20 +1714,9 @@ virStorageBackendStablePath(virStoragePoolObjPtr pool,
int retry = 0;
int direrr;
- /* Short circuit if pool has no target, or if its /dev */
- if (pool->def->target.path == NULL ||
- STREQ(pool->def->target.path, "/dev") ||
- STREQ(pool->def->target.path, "/dev/"))
- goto ret_strdup;
-
- /* Skip whole thing for a pool which isn't in /dev
- * so we don't mess filesystem/dir based pools
- */
- if (!STRPREFIX(pool->def->target.path, "/dev"))
- goto ret_strdup;
-
/* Logical pools are under /dev but already have stable paths */
- if (pool->def->type == VIR_STORAGE_POOL_LOGICAL)
+ if (pool->def->type == VIR_STORAGE_POOL_LOGICAL ||
+ !virStorageBackendPoolPathIsStable(pool->def->target.path))
goto ret_strdup;
/* We loop here because /dev/disk/by-{id,path} may not have existed
diff --git a/src/storage/storage_backend.h b/src/storage/storage_backend.h
index bb1e8d8..85a8a4b 100644
--- a/src/storage/storage_backend.h
+++ b/src/storage/storage_backend.h
@@ -187,6 +187,7 @@ int virStorageBackendUpdateVolTargetInfoFD(virStorageSourcePtr
target,
int fd,
struct stat *sb);
+bool virStorageBackendPoolPathIsStable(const char *path);
char *virStorageBackendStablePath(virStoragePoolObjPtr pool,
const char *devpath,
bool loop);
--
2.1.0