]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
storage: Split out the stable path check
authorJohn Ferlan <jferlan@redhat.com>
Tue, 7 Apr 2015 14:53:37 +0000 (10:53 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 21 Apr 2015 10:08:05 +0000 (06:08 -0400)
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

src/storage/storage_backend.c
src/storage/storage_backend.h

index 043598367986d5d8a37c2e67596a0c41366eb9e6..b07e0d9f32c0baa31bc0adda8e25f7f1ecaf7ae7 100644 (file)
@@ -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
index bb1e8d892a6b28204c695442a1d9b241ba27925a..85a8a4b5ad815cc5000014e57aa5f4637d38d05c 100644 (file)
@@ -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);