37 lines
1.5 KiB
Diff
37 lines
1.5 KiB
Diff
commit 275155f664614fd32bcf5e963488e6f97b66dae4
|
|
Author: Cole Robinson <crobinso@redhat.com>
|
|
Date: Wed Jan 25 12:07:14 2012 -0500
|
|
|
|
storage: Fix any VolLookupByPath if we have an empty logical pool
|
|
|
|
On F16 at least, empty volume groups don't have a directory under /dev.
|
|
The directory only appears once a logical volume is created.
|
|
|
|
This tickles some behavior in BackendStablePath which ends with
|
|
libvirt sleeping for 5 seconds while waiting for the directory to appear.
|
|
This causes all sorts of problems for the virStorageVolLookupByPath API
|
|
which virtinst uses, even if trying to resolve a path that is independent
|
|
of the logical pool.
|
|
|
|
In reality we don't even need to do that checking since logical pools
|
|
always have a stable target path. Short circuit the polling in that
|
|
case.
|
|
|
|
Fixes bug 782261
|
|
|
|
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
|
|
index d7394e0..306e487 100644
|
|
--- a/src/storage/storage_backend.c
|
|
+++ b/src/storage/storage_backend.c
|
|
@@ -1347,6 +1347,10 @@ virStorageBackendStablePath(virStoragePoolObjPtr pool,
|
|
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)
|
|
+ goto ret_strdup;
|
|
+
|
|
/* We loop here because /dev/disk/by-{id,path} may not have existed
|
|
* before we started this operation, so we have to give it some time to
|
|
* get created.
|