From: Cole Robinson Date: Wed, 25 Jan 2012 17:07:14 +0000 (-0500) Subject: storage: Fix any VolLookupByPath if we have an empty logical pool X-Git-Tag: v0.9.6.1~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e11aa0262b4142250880dd19d28a48c69199fec1;p=thirdparty%2Flibvirt.git 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 (cherry picked from commit 275155f664614fd32bcf5e963488e6f97b66dae4) --- diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index d125504b44..a97eeffc6a 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -1327,6 +1327,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.