On Wed, Apr 01, 2015 at 01:29:11PM -0400, John Ferlan wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1171933
If a non stable path is provided for the pool's target path, check to
see if the directory exists before allowing pool startup; otherwise,
The only non-stable path that can possibly result in a non-empty pool is '/dev/'.
later in the processLU calls to find LUN's all that happens is
the
volume target.path will get the strdup'd value of the pool target.path
(which doesn't exist), so attempts to find the LU are unsuccessful
resulting in a started pool with no devices listed even though the
block devices for the iSCSI LU's do exist.
Additionally if the non stable path does exist and it's determined no
targets are found, then force failure in the refresh path.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/storage/storage_backend_iscsi.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/src/storage/storage_backend_iscsi.c b/src/storage/storage_backend_iscsi.c
index fba037f..b5a15b1 100644
--- a/src/storage/storage_backend_iscsi.c
+++ b/src/storage/storage_backend_iscsi.c
@@ -149,6 +149,15 @@ virStorageBackendISCSIFindLUs(virStoragePoolObjPtr pool,
if (virStorageBackendSCSIFindLUs(pool, host) < 0)
goto cleanup;
+ if (pool->volumes.count == 0 &&
This is always true if the path does not start with /dev.
https://www.redhat.com/archives/libvir-list/2015-March/msg01578.html
+ !STRPREFIX(pool->def->target.path, "/dev"))
{
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("Non stable target path '%s' for pool '%s'
"
+ "found no target volumes"),
+ pool->def->target.path, pool->def->name);
+ return -1;
+ }
+
retval = 0;
cleanup:
@@ -393,6 +402,15 @@ virStorageBackendISCSIStartPool(virConnectPtr
conn,
return -1;
}
+ if (!STRPREFIX(pool->def->target.path, "/dev") &&
+ !virFileExists(pool->def->target.path)) {
If you remove the virFileExists condition, you don't need the error
check in the first hunk.
Jan
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("Non stable target path '%s' not found for pool
'%s'"),
+ pool->def->target.path, pool->def->name);
+ return -1;
+ }
+
+
if ((session = virStorageBackendISCSISession(pool, true)) == NULL) {
if ((portal = virStorageBackendISCSIPortal(&pool->def->source)) ==
NULL)
goto cleanup;
--
2.1.0
--
libvir-list mailing list
libvir-list(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list